在不完整查询中更改断言的顺序后,它变为sat。
查询结构是:
definitions1
assertions1
definitions2
bad_assertions
check-sat
我使用Python的排序函数对bad_assertions进行排序,这使得Unsat查询Sat。
Z3版本4.0,4.1; Ubuntu 12.04
不幸的是,查询非常大,这使得它们难以调试, 所以我可以提供任何其他信息。
答案 0 :(得分:4)
我设法重现了您问题中报告的问题。这两个例子都令人满意。生成unsat
的脚本暴露了数据类型理论中的错误。我修复了错误,修复程序将在Z3 4.2中提供。由于这是一个健全性错误,我们很快就会发布4.2版本。在此期间,您可以通过在命令行中使用选项RELEVANCY=0
来解决该错误。
答案 1 :(得分:1)
根据您的描述,这听起来像一个错误。 sat /不应该当然不依赖于订购。 如果打包repro很困难,那么一种方法可以帮助我们调试 问题,一旦你对触发bug的信心有信心, 是使用“open_log()”来转储与Z3的所有交互的痕迹。 在对Z3的其他调用之前,您应该使用“open_log”。 然后,我们可以在没有您的来源的情况下重播日志。