Load loadpath.
(** Separation Logic Interface  This module type axiomatizes the types and operators upon which our soundness proof depends.  NOTE: This module type will probably be made obsolete sometime in the future (if we ever get back to working on this project).  We now believe it's better to axiomatize the separation logic directly (i.e., its proof theory) as opposed to axiomatizing the /models/ of the separation logic, which is what we do here. *)
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.

Axiom val2loc_inj : forall v1 v2 l,
val2loc v1 = Some l ->  val2loc v2 = Some l -> v1=v2.