Z3中记录数据类型的所有可能值?

时间:2013-08-20 15:54:48

标签: z3 smt

我试图在z3中定义一个由六个不同类型元素组成的记录数据类型。我就是这样做的: (declare-datatypes()((S(mk-pair(p1(P1type))(p2(P2type))(p3(P3type))(m1(bool))(m2(bool))(m3(bool))) ))) 但是当我使用(forall(x1 S))时,求解器似乎没有考虑我的数据类型的所有可能的估值组合。如果你让我知道我做错了什么,或者我不希望z3考虑到S的所有估值组合,我感激不尽。 非常感谢, Fathiyeh

1 个答案:

答案 0 :(得分:1)

以下是您示例的永久链接:http://rise4fun.com/Z3/0sl11

该模型产生函数LS和thau的解释。 这两个函数都将S中的值映射到布尔值。所以他们是谓词。 该模型说明了满足公式的这些谓词的可能值。 它不必通过明确列出每个案例来制定谓词。这些谓词通常被编写为if-then-else表达式。最后一个else分支包含未在if-branches中明确处理的值的默认大小写。