错误?改变断言的顺序会影响可满足性

时间:2012-09-05 12:08:00

标签: z3

在不完整查询中更改断言的顺序后,它变为sat。

查询结构是:

definitions1
assertions1
definitions2
bad_assertions
check-sat

我使用Python的排序函数对bad_assertions进行排序,这使得Unsat查询Sat。

Z3版本4.0,4.1; Ubuntu 12.04

不幸的是,查询非常大,这使得它们难以调试, 所以我可以提供任何其他信息。

以下是最初不会有query标记混合的行,以及一个简单的python script来混合查询中的行。

2 个答案:

答案 0 :(得分:4)

我设法重现了您问题中报告的问题。这两个例子都令人满意。生成unsat的脚本暴露了数据类型理论中的错误。我修复了错误,修复程序将在Z3 4.2中提供。由于这是一个健全性错误,我们很快就会发布4.2版本。在此期间,您可以通过在命令行中使用选项RELEVANCY=0来解决该错误。

答案 1 :(得分:1)

根据您的描述,这听起来像一个错误。 sat /不应该当然不依赖于订购。 如果打包repro很困难,那么一种方法可以帮助我们调试 问题,一旦你对触发bug的信心有信心, 是使用“open_log()”来转储与Z3的所有交互的痕迹。 在对Z3的其他调用之前,您应该使用“open_log”。 然后,我们可以在没有您的来源的情况下重播日志。