如何用Z3证明单参数群的定理

时间:2014-10-10 13:54:35

标签: z3 theorem-proving abstract-algebra

使用Z3可以证明

enter image description here

形成一个单参数组。

使用以下Z3代码执行校样:

(declare-sort S)
(declare-fun carte (Real Real) S)
(declare-fun h (Real S) S)

(declare-fun a () Real)
(declare-fun b () Real)
(assert (forall ( (x Real) (y Real) (t Real)) (= (h t (carte x y)) 
                                                 (carte (+ x (* a t)) 
                                                      (+ y (* b t)))   )   ) )

(check-sat)

(push)
(assert (forall ((x Real) (y Real) (t Real) (s Real)) (distinct (h s (h t (carte x y))) 
                                                                 (h (+ t s) (carte x y)))  ))
(check-sat)
(pop)

(push)
(assert (forall ((x Real) (y Real) ) (distinct (h 0 (carte x y)) 
                                               (carte x y))    ))
(check-sat)
(pop)



(push)
(assert (forall ((x Real) (y Real) (t Real)) (distinct (h t (h (- 0 t) (carte x y))) 
                                                       (carte x y))    ))
(check-sat)
(pop)


(push)
(assert (forall ((x Real) (y Real) (t Real)) (distinct (h (- 0 t) (h t (carte x y))) 
                                                       (carte x y))    ))
(check-sat)
(pop)

,相应的输出是

sat
unsat
unsat
unsat
unsat

请在线运行代码here

其他例子:证明

enter image description here

形成一个单参数组。

使用以下Z3代码执行校样:

(declare-sort S)
(declare-fun carte (Real Real Real) S)
(declare-fun h (Real S) S)

(declare-fun a () Real)
(declare-fun b () Real)
(declare-fun c () Real)
(assert (forall ( (x Real) (y Real) (z Real) (t Real)) (= (h t (carte x y z)) 
                                                 (carte (+ x (* a t)) 
                                                      (+ y (* b t))  (+ z (* c t))   )   )   ) )

(check-sat)

(push)
(assert (forall ((x Real) (y Real) (z Real) (t Real) (s Real)) (distinct (h s (h t (carte x y z))) 
                                                                 (h (+ t s) (carte x y z)))  ))
(check-sat)
(pop)

(push)
(assert (forall ((x Real) (y Real) (z Real) ) (distinct (h 0 (carte x y z)) 
                                               (carte x y z))    ))
(check-sat)
(pop)



(push)
(assert (forall ((x Real) (y Real) (z Real) (t Real)) (distinct (h t (h (- 0 t) (carte x y z))) 
                                                       (carte x y z))    ))
(check-sat)
(pop)


(push)
(assert (forall ((x Real) (y Real) (z Real) (t Real)) (distinct (h (- 0 t) (h t (carte x y z))) 
                                                       (carte x y z))    ))
(check-sat)
(pop)

,相应的输出是

sat
unsat
unsat
unsat
unsat

请在线运行此代码here

其他例子:证明

enter image description here

形成一个单参数组。

在线提供证明here,并在线提供四维扩展here

最后几个例子:证明

enter image description here

形成一个单参数组。

证明在线here

证明

enter image description here

形成一个单参数组。

证明在线here

更一般地说,证明

enter image description here

形成一个单参数组。

证明在线here

一个三维扩展:证明

enter image description here

形成一个单参数组。

证明在线here

双曲函数的一个例子:证明

enter image description here

形成一个单参数组。

证明在线here

我的问题是:

  1. 可以使用数组制作更高尺寸的样张吗?

  2. 我声称Z3是唯一能够执行这些校样的系统。你同意吗?

0 个答案:

没有答案