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不會返回未知數。如果我考慮沒有反對稱性的反身性和傳遞性,那也是一樣的。