使用Z3可以证明
形成一个单参数组。
使用以下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。
其他例子:证明
形成一个单参数组。
使用以下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
其他例子:证明
形成一个单参数组。
最后几个例子:证明
形成一个单参数组。
证明在线here。
证明
形成一个单参数组。
证明在线here。
更一般地说,证明
形成一个单参数组。
证明在线here。
一个三维扩展:证明
形成一个单参数组。
证明在线here。
双曲函数的一个例子:证明
形成一个单参数组。
证明在线here
我的问题是:
可以使用数组制作更高尺寸的样张吗?
我声称Z3是唯一能够执行这些校样的系统。你同意吗?