1

Using Z3 it is possible to prove that

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

forms a one-parameter group.

The proof is given online here.

Prove that

enter image description here

forms a one-parameter group.

The proof is given online here.

More in general, prove that

enter image description here

forms a one-parameter group.

The proof is given online here.

One three-dimensional extension: prove that

enter image description here

forms a one-parameter group.

The proof is given online here.

One example with hyperbolic functions: Prove that

enter image description here

forms a one-parameter group.

The proof is given online here

My questions are:

  1. It is possible to make the proofs for higher dimensions using arrays?

  2. I claim that Z3 is the only system that is able to perform these proofs. Do you agree?

Juan Ospina
  • 1,317
  • 1
  • 7
  • 15

0 Answers0