我在非线性整数算术中有一个简单的例子,即搜索毕达哥拉斯三元组。根据我在相关问题中看到的内容(见下文),我希望Z3找到解决这个问题的方法,但它会返回“未知”。以下是SMT-LIB v2中的示例:
{{1}}
有一些相关的问题,最值得注意的是:
答案 0 :(得分:0)
似乎Z3不会尝试通过钻头爆破找到解决方案,除非变量具有有限范围。使用以下命令替换(check-sat)
将找到解决方案:
(check-sat-using (then (using-params add-bounds :add-bound-lower -100 :add-bound-upper 100) smt))
或者,可以添加断言语句,强制每个变量具有一定的有限范围。