Module Type VERISTAR_LOGIC.
(** Locations and values *)
Parameters loc val : Type.
Declare Instance Join_val: Join val.
Declare Instance Perm_val: Perm_alg val.
Declare Instance Sep_val: Sep_alg val.
Declare Instance Canc_val: Canc_alg val.
Parameter val2loc : val -> option loc.
Parameter nil_val : val.
(** The empty value: read "undefined" *)
Parameter empty_val : val.
Definition full (v : val) := forall v2, joins v v2 -> identity v2.

Axiom loc_eq_dec : forall l1 l2 : loc, Decidable.decidable (l1=l2).
Axiom nil_dec : forall v, Decidable.decidable (v=nil_val).