Z3 群论中一个一般定理的有界归纳证明
我试图通过归纳法证明: 给定一个群G,然后求所有(x,y,z)/((y^n)x(z^n)=x)=>(阶数(G)=n) 我使用有界归纳法和以下代码Z3 群论中一个一般定理的有界归纳证明,z3,Z3,我试图通过归纳法证明: 给定一个群G,然后求所有(x,y,z)/((y^n)x(z^n)=x)=>(阶数(G)=n) 我使用有界归纳法和以下代码 ;; Derive order n from a single axiom for groups order n. ;; ((Y^n)X(Z^n) = X )=> (order(G) = n) for 1 < n < 23 (declare-sort S) (declare-fun e () S) (declare-fun mult
;; Derive order n from a single axiom for groups order n.
;; ((Y^n)X(Z^n) = X )=> (order(G) = n) for 1 < n < 23
(declare-sort S)
(declare-fun e () S)
(declare-fun mult (S S) S)
(declare-fun power (S Int) S)
(assert (forall ((x S)) (= e (power x 0))))
(assert (forall ((x S)) (= x (power x 1))))
(assert (forall ((n Int) (x S))
(=> (and (>= n 2) (<= n 22))
(= (power x n) (mult x (power x (- n 1)))))))
(assert (= (mult e e) e))
(check-sat)
(define-fun p ((x S) (y S) (z S) (w S) (n Int)) Bool
(=> (= (mult (power y n) (mult x (power z n)))
x) (= (power w n) e) ) )
(assert (forall ((x S) (y S) (z S) (w S)) (p x y z w 2)))
(assert (forall ((x S) (y S) (z S) (w S) (n Int))
(=> (and (> n 2) (<= n 22))
(= (p x y z w n) (p x y z w (- n 1))))))
;; Bounded inductive proof.
(assert (not (forall ((x S) (y S) (z S) (w S)) (p x y z w 22))))
(check-sat)
联机运行此代码
我正在证明2(设置选项:qi-eager阈值70000)
,Z3能够证明定理,直到n=60000(本地,在线,直到n=10000)
sat
unsat