Как получить представление о запросе z3, когда не в Windows - PullRequest
0 голосов
/ 21 января 2019

На вики-странице https://github.com/FStarLang/FStar/wiki/Profiling-Z3-queries предлагается использовать Z3 Axiom Profiler;однако Z3 Axiom Profiler работает надежно только на Windows.

Как я могу легко получить квантификаторы, которые работают больше всего без Z3 Axiom Profiler?

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Мне удалось использовать профилировщик аксиом в Linux через mono, но это действительно занимает много часов (кажется, что он зависает в течение этого времени, но он действительно работает).Как только он закончил свой анализ, интерфейс стал довольно отзывчивым (хотя я бы рекомендовал держаться подальше от некоторых опций в меню «Файл», которые вызывают его сбой).

Так как мне нужно было бы в основномоставив его на ночь для нетривиальных трассировок, я раскручиваю его на сервере и использую переадресацию X через xpra (что позволяет мне отключаться и повторно подключаться к серверу).


Если проблема заключается только в том, чтобы найти запросы, которые запускаются плохо, и если fstar работает быстрее с подсказками, тогда у меня также есть полезный скрипт fstar-profile-queries, который я написал несколько месяцев назад и который мог бы быть полезен,Он использует qprofdiff для поиска некорректных запросов, но делает это намного удобнее для работы.

0 голосов
/ 21 января 2019

Относится к ответу Джонатана:

Поскольку этот коммит: https://github.com/FStarLang/FStar/commit/c4ce03c3709b44600d66b8c2ee55a0e1aa9f75a3

Достаточно просто выполнить:

z3 smt.qi.profile=true queries-Foo.smt2

, так как другой F * -специфиченпараметры теперь встроены в файл .smt2.

0 голосов
/ 21 января 2019

Этот вызов командной строки работает достаточно хорошо для меня, опирается только на функцию qi.profile в z3 и оставляет главных нарушителей внизу.

z3 smt.qi.profile=true queries-EverCrypt.Hash.Incremental-33.smt2 |& grep quantifier_instances | sort -t : -k 2 -n

(отредактировано после ответа Ника для удаления параметров z3, теперь встроенных в файл smt2)

...