Using Z3 it is possible to prove that
forms a one-parameter group.
The proof is performed using the following Z3 code:
(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)
and the corresponding output is
sat
unsat
unsat
unsat
unsat
Please run the code online here.
Other example: proving that
forms a one-parameter group.
The proof is performed using the following Z3 code:
(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)
and the corresponding output is
sat
unsat
unsat
unsat
unsat
Please run this code online here
Other example: To prove that
forms a one-parameter group.
The proof is given online here and the four-dimensional extension is given online here
A last couple of examples: Prove that
forms a one-parameter group.
The proof is given online here.
Prove that
forms a one-parameter group.
The proof is given online here.
More in general, prove that
forms a one-parameter group.
The proof is given online here.
One three-dimensional extension: prove that
forms a one-parameter group.
The proof is given online here.
One example with hyperbolic functions: Prove that
forms a one-parameter group.
The proof is given online here
My questions are:
It is possible to make the proofs for higher dimensions using arrays?
I claim that Z3 is the only system that is able to perform these proofs. Do you agree?