我在玩未解释的排序和函数,不能完全理解量化公式如何与空模型交互。这里(也在这里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]
似乎可以解决问题,但是有更好的方法吗?