Z3中整数公式的简化

Z3中整数公式的简化,z3,Z3,在将Z3中的量词消去法应用于线性算术公式h之后,我得到了一个30行左右的公式。事实证明,这个公式相当于h2=Andn>2,i>=0,i我目前的最佳解决方案是使用RepeatThenOrElse'split-clause',nnf',propagate ineqs',ctx solver simplify',以及最新的Z3不稳定版本,其中ctx solver simplify中的错误已经得到纠正。这是一个好问题,尽管我认为内置方法无法做到这一点。ctx solver simplify方法是一种更具

在将Z3中的量词消去法应用于线性算术公式h之后,我得到了一个30行左右的公式。事实证明,这个公式相当于h2=Andn>2,i>=0,i我目前的最佳解决方案是使用RepeatThenOrElse'split-clause',nnf',propagate ineqs',ctx solver simplify',以及最新的Z3不稳定版本,其中ctx solver simplify中的错误已经得到纠正。

这是一个好问题,尽管我认为内置方法无法做到这一点。ctx solver simplify方法是一种更具攻击性的方法,它不知道您的意图是获得连接。也许一个想法是将公式简化为一组模板。您可以提出从模板空间提取的文本,然后从公式本身提取,然后提取一个连接词。不幸的是,预期的公式不一定是连接词。在那个特定的例子中,我猜想结果应该与公式h2 h等价,公式h2 h来自一个程序分析问题,我对最终结果应该是什么有一些直觉,我用Z3 h进行了检查⇒h2和h2⇒h、 但总的来说,这个公式可能更复杂。你的想法很有趣,我可以,比方说,推测公式只包含几个间断点。。。