End RAMIF_PLAIN.
End RAMIF_PLAIN.
Module RAMIF_Q.
Section RAMIF_Q.
Context {A : Type}.
Context {ND : NatDed A}.
Context {SL : SepLog A}.

(* Using split to prove frame will lead to a simpler proof. *)
(* But it requires a unitary separation logic.              *)
Lemma frame: forall {B} g l (g' l': B -> A) F,
g |-- l * allp (l' -* g') ->
g * F |-- l * allp (l' -* g' * Basics.const F).