不在Windows上时如何获取有关z3查询的见解

时间:2019-01-21 17:32:02

标签: fstar

https://github.com/FStarLang/FStar/wiki/Profiling-Z3-queries上的Wiki页面建议使用Z3 Axiom Profiler;但是,Z3 Axiom Profiler似乎只能在Windows上可靠地工作。

在没有Z3 Axiom Profiler的情况下,如何轻松获得最有效的量化器?

3 个答案:

答案 0 :(得分:2)

有关乔纳森的答复:

自此提交以来:https://github.com/FStarLang/FStar/commit/c4ce03c3709b44600d66b8c2ee55a0e1aa9f75a3

只需运行即可:

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

因为其他特定于F *的选项现在已嵌入.smt2文件中。

答案 1 :(得分:1)

此命令行调用对我来说足够好,仅依赖z3的qi.profile功能,而将最严重的问题留在最底端。

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

(按照Nik的回答删除,现在删除了smt2文件中嵌入的z3选项)

答案 2 :(得分:1)

我已经能够通过mono在Linux上使用axiom profiler,但是确实需要花费很多时间( 小时)(在此过程中它似乎挂了很长时间,但是确实有效)。完成分析后,该界面就会非常有响应(尽管我建议不要使用“文件”菜单下的一些导致崩溃的选项)。

由于我基本上需要将其放置一整夜以进行非平凡的跟踪,因此我将其在服务器上旋转并通过xpra使用X转发(这使我可以断开并重新连接到服务器)。


如果问题仅在于查找触发错误的查询,并且如果fstar使用提示运行得更快,那么我也有一个有用的脚本fstar-profile-queries,我几个月前编写了一个可能有用的脚本。它使用qprofdiff查找有问题的查询,但是这样做的方式要好得多。