我认为检测共享表达式的技术已应用于大多数现代 SMT 求解器。当它处理一系列相似的表达式时,性能应该非常好。但是,在input1和input2上运行 Z3 后,我得到了意想不到的结果。不是在“input1”中构建一个长约束A ,而是定义了一些中间变量来映射到“input2”中A的子表达式。在这种情况下,input1 的变量较少,应该比 input2 解决得更快。我无法从统计数据中找到有用的信息,因为它们除了求解时间和消耗的内存外完全相同:
如果有人能回答/解释什么会更多地影响 SMT 求解器的性能,变量的数量或子表达式的数量,我将非常感激?