Docs GODI Archive
Projects Blog Link DB

Search GODI:


More options
File lib/alt-ergo/smt_prelude.mlw GODI Package apps-alt-ergo
 
   smt_prelude.mlw  
(*logic ite : bool, 'a1, 'a1 -> 'a1

axiom ite_true: (forall x:'a1. (forall y:'a1. (ite(true, x, y) = x)))

axiom ite_false: (forall x:'a1. (forall y:'a1. (ite(false, x, y) = y)))
*)
type U

type ('a,'b) Array_poly

logic select : ('a,'b) Array_poly, 'a -> 'b
logic store : ('a,'b) Array_poly, 'a, 'b -> ('a,'b) Array_poly

axiom select_store:
  (forall m:('a,'b) Array_poly.
    (forall p:'a.
      (forall a:'b [select(store(m, p, a), p)|store(m, p, a)]. 
	 (select(store(m, p, a), p) = a))))

axiom select_store_neq:
  (forall m: ('a,'b) Array_poly.
    (forall p1: 'a.
      (forall p2: 'a.
        (forall a:'b 
	   [select(store(m, p1, a), p2) | store(m, p1, a), select(m,p2)].
          ((p1 <> p2) -> (select(store(m, p1, a), p2) = select(m, p2)))))))

(* Those traductions are done in smt_to_why.ml *)
(*type Array = (int,int) Array_poly
type Array1 = (int,Real) Array_poly
type Array2 = (int,Array1) Array_poly*)

This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml