Module VericSepLogic <: SepTheory.SepTheory.
Definition hprop := mpred.
Definition himp := derives.
Definition heq := fun p1 p2 => derives p1 p2 /\ derives p2 p1.
Definition Refl_himp := derives_refl.
Definition Trans_himp := derives_trans.
Local Notation "a ===> b" := (himp a b) (at level 60).
Local Notation "a <===> b" := (heq a b) (at level 60).
Definition emp := emp.
Definition inj := fun p => (prop p && emp).
Definition star := sepcon.
Definition ex := @exp mpred Nveric.
Ltac sep_solve :=
unfold star, himp, heq, emp, inj, ex in *; intuition; cancel; auto.

Lemma himp_subst_p : forall P Q R S,
P ===> S -> (star S Q) ===> R ->
(star P Q) ===> R.