Microsoft Z3解决方案格式理解

时间:2018-09-19 21:47:21

标签: z3

我正在用Z3解决SAT问题。然后我得到这份作业表格Z3:

(model 
(define-fun B ((x!0 Int))
(ite (= x!0 1) false
(ite (= x!0 2) false
  true)))
(define-fun D ((x!0 Int))
 (or (= x!0 3) (= x!0 1))
(define-fun A ((x!0 Int))
  (ite (= x!0 1) false
  (ite (= x!0 4) false
    true)))
(define-fun C ((x!0 Int))
(ite (= x!0 5) false
  true))

对于B,D,C我可以理解(B1,B2为假,其他(B3,B4,B5)为真)。 但是,您如何才能有意义地解释D的此OR公式?应该是D1和D3为真,D2,D4,D5为假,似乎给出了正确的答案。但是为什么它以这种奇怪的形式呈现呢?

1 个答案:

答案 0 :(得分:1)

SMTLib中并未对模型打印进行标准化,并且取决于您使用的底层类型(函数,数组,标量类型等),Z3将以某种内部格式进行打印。

要获取单个值,您可以随时执行以下操作:

(eval (D 0))

等检索单个值。