Definition Perm_pre_rmap (A: Type): Perm_alg (pre_rmap A) :=
Perm_prop _ _ (Perm_fun address _ _ _) _ (pre_rmap_sa_valid_join _).
Definition Sep_pre_rmap (A: Type): Sep_alg (pre_rmap A) :=
Sep_prop _ _ (Perm_fun address _ _ _) _ (pre_rmap_sa_valid_join _)  _ (pre_rmap_sa_valid_core _).
Definition Canc_pre_rmap (A: Type): Canc_alg (pre_rmap A) :=
@Canc_prop _ _ _ (Canc_fun address _ _ _).
Definition Disj_pre_rmap (A: Type): Disj_alg (pre_rmap A) :=
@Disj_prop _ _ _ (Disj_fun address _ _ _).
End StratModel.
Open Local Scope nat_scope.
Module Type RMAPS.
Declare Module AV:ADR_VAL.
Parameter rmap : Type.

(* Specifications: *)
Axiom Join_rmap: Join rmap. Existing Instance Join_rmap.
Axiom Perm_rmap: Perm_alg rmap. Existing Instance Perm_rmap.
Axiom Sep_rmap: Sep_alg rmap. Existing Instance Sep_rmap.
Axiom Canc_rmap: Canc_alg rmap.  Existing Instance Canc_rmap.
Axiom Disj_rmap: Disj_alg rmap.  Existing Instance Disj_rmap.
Axiom ag_rmap: ageable rmap.  Existing Instance ag_rmap.
Axiom Age_rmap: Age_alg rmap.  Existing Instance Age_rmap.
Inductive preds : Type :=
SomeP : forall A : list Type, (listprod A -> pred rmap) -> preds.