哪个更重要,变量或子表达的数量?

时间:2014-05-26 11:50:57

标签: preprocessor z3 smt simplification

我认为检测共享表达式的技术适用于大多数现代SMT求解器。当它处理一系列相似的表达式时,性能应该非常好。但是,在input1input2上运行Z3后,我得到了意想不到的结果。而不是在" input1"中构建长约束 A ,而是定义一些中间变量以映射到"中的 A 的子表达式。输入2&#34 ;.在这种情况下,input1具有较少的变量,应该比input2更快地解决。我无法从统计数据中找到有用的信息,因为它们完全相同,除了消耗的求解时间和内存:

z3 statistic

如果有人能够回答/解释影响SMT求解器性能的因素,变量数量或子表达式数量,我将非常感激吗?

1 个答案:

答案 0 :(得分:2)

我做了一些分析,似乎两个输入在求解器中的行为完全相同。所有(check-sat)命令完全相同。请注意,输入2是大小为255KB的文件,但input1是大小为240MB的文件,即该文件比第一个大约1000倍。根据我的分析器,解析这些查询所需的所有额外时间都花在解析器上。因此,阅读和检查输入只需要很长时间;实际的查询都很简单。