Download Paper - STS

Transcript
Appendix
type predicate =
| Pfalse
| Ptrue
| Papp of logic info * (logic label *
logic label) list * term list
| Pseparated of term list
| Prel of relation * term * term
| Pand of predicate named * predicate
named
| Por of predicate named * predicate
named
| Pxor of predicate named * predicate
named
| Pimplies of predicate named * predicate
named
| Piff of predicate named * predicate
named
| Pnot of predicate named
| Pif of term * predicate named * predicate named
| Plet of logic info * predicate named
| Pforall of quantifiers * predicate named
| Pexists of quantifiers * predicate named
| Pat of predicate named * logic label
| Pvalid read of logic label * term
| Pvalid of logic label * term
| Pinitialized of logic label * term
| Pallocable of logic label * term
| Pfreeable of logic label * term
| Pfresh of logic label * logic label * term
* term
| Psubtype of term * term
(* always-false predicate. *)
(* always-true predicate. *)
(* application of a predicate. *)
(* comparison of two terms. *)
(* conjunction *)
(* disjunction. *)
(* logical xor. *)
(* implication. *)
(* equivalence. *)
(* negation. *)
(* conditional *)
(* definition of a local variable *)
(* universal quantification. *)
(* existential quantification. *)
(* predicate refers to a particular program point. *)
(* the given locations are valid for reading. *)
(* the given locations are valid. *)
(* the given locations are initialized. *)
(* the given locations can be allocated. *)
(* the given locations can be free. *)
(* \fresh(pointer, n) A memory block of n bytes is
newly allocated to the pointer. *)
(* First term is a type tag that is a subtype of the
second. *)
Table 1: Predicates of Frama-C
75