2
我试图在Z3中定义成对关系(在下面的代码中称为C)(使用数组定义)之间的parthood关系。 我写了3个断言来定义反身性,传递性和反对称性,但Z3返回“未知”,我不明白为什么。Z3中的部分定义
(define-sort Set() (Array Int Bool))
(declare-rel C (Set Set))
; reflexivity
(assert (forall ((X Set)) (C X X)))
; transitive
(assert (forall ((X Set)(Y Set)(Z Set))
(=>
(and (C X Y) (C Y Z))
(C X Z)
)
))
; antisymmetric
(assert (forall ((X Set)(Y Set))
(=>
(and (C X Y) (C Y X))
(= X Y)
)
))
(check-sat)
我注意到,当反对称性被认为是与其他2一个断言未知仅返回。如果我只考虑反对称性Z3不会返回未知数。如果我考虑没有反对称性的反身性和传递性,那也是一样的。