为什么不稳定的分支不能证明一个定理,但主分支能够?

时间:2014-04-20 02:04:07

标签: z3

我试图使用以下Z3 SMT-LIB代码来证明群论中的一个定理

 (declare-sort S)
(declare-fun identity () S)
(declare-fun product (S S S) Bool)
(declare-fun inverse (S) S)
(declare-fun multiply (S S) S)

(assert (forall ((X S)) (product identity X X) ))
(assert (forall ((X S)) (product X identity X) ))
(assert (forall ((X S)) (product (inverse X) X identity) ))
(assert (forall ((X S)) (product X (inverse X) identity) ))
(assert (forall ((X S) (Y S)) (product X Y (multiply X Y)) ))
;;(assert (forall ((X S) (Y S) (Z S) (W S)) (or (not (product X Y Z)) 
;;                                              (not (product X Y W))
;;                                              (= Z W))))


(assert (forall ((X S) (Y S) (Z S) (U S) (V S) (W S)) (or (not (product X Y U)) 
                                              (not (product Y Z V))
                                              (not (product U Z W) )
                                              (product X V W))))

(assert (forall ((X S) (Y S) (Z S) (U S) (V S) (W S)) (or (not (product X Y U)) 
                                              (not (product Y Z V))
                                              (not (product X V W) )
                                              (product U Z W))))



(check-sat)


(push)
;; File     : GRP001-1 : TPTP v6.0.0. Released v1.0.0.
;; Domain   : Group Theory
;; Problem  : X^2 = identity => commutativity
;; Version  : [MOW76] axioms.
;; English  : If the square of every element is the identity, the system
;;            is commutative.
(declare-fun a () S)
(declare-fun b () S)
(declare-fun c () S)
(assert (forall ((X S)) (product X X identity) ))
(assert (product a b c))
(assert (not (product b a c)))
(check-sat)
(pop)

请在线运行此代码here

主分支Z3能够证明这样的定理,但不稳定的分支不能。请告诉我原因。非常感谢。

0 个答案:

没有答案