【发布时间】:2013-03-01 01:05:31
【问题描述】:
我在玩未解释的排序和函数,不能完全理解量化公式如何与空模型交互。这里(也在这里http://rise4fun.com/Z3Py/6ets)是一些让我有些困惑的简单例子:
-
[∀v : False]不饱和,而“直觉上”它适用于空模型。 - 检查
[∃v : v = v]会产生一个空模型,而该模型没有令人满意的分配。 - 某些公式,看似等同于
[∃v : v = v],以某种方式阻止了 z3 生成空模型。[∃v, v1 : v = v1]就是这样一个例子。例如,如果我们将这样的公式添加到求解器,然后尝试创建类似于 allsat 程序的东西(添加越来越多的约束以排除越来越多的模型),我们会在得到一个空模型之前遇到 unsat。
那么,您能否请我参考任何描述 z3 如何处理量词和空模型的文档/论文?
另外,如果我选择只关注非空模型,那么询问 z3 的正确方法是什么? [∃v, v1 : v = v1] 之类的东西似乎可以解决问题,但有没有更好的方法?
【问题讨论】:
标签: z3 smt first-order-logic