singrdk/base/build/boogie/UnivBackPred.zap

54 lines
1.2 KiB
Plaintext

; ----------------------------------------------------------------------
; Boogie universal background predicate
; Copyright (c), Microsoft Corp.
(&&
; select/store axioms, 1 index argument
(forall (A i v)
(= (select1 (store1 A i v) i) v))
(forall (A i j v)
(==> (!= i j)
(=
(select1 (store1 A i v) j)
(select1 A j))))
; select/store axioms, 2 index arguments
(forall (A o f v)
(= (select2 (store2 A o f v) o f) v))
(forall (A o f p g v)
(==> (!= o p)
(=
(select2 (store2 A o f v) p g)
(select2 A p g))))
(forall (A o f p g v)
(==> (!= f g)
(=
(select2 (store2 A o f v) p g)
(select2 A p g))))
; <: is a partial order: it is reflexive, transitive, and anti-symmetric
(forall (t)
(<: t t)
(PATS (<: t t)))
(forall (t u v)
(==>
(&& (<: t u ) (<: u v))
(<: t v))
(PATS (MPAT (= (<: t u) true) (= (<: u v) true))))
(forall (t u)
(==>
(&& (<: t u) (<: u t))
(= t u))
(PATS (MPAT (<: t u) (<: u t))))
)
; End Boogie universal background predicate
; ----------------------------------------------------------------------