Section RAMIF_Q'.
Context {A : Type}.
Context {ND : NatDed A}.
Context {SL : SepLog A}.
Context {CoSL: CorableSepLog 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 p g' l' F,
(forall x: B, corable (p x)) ->
g |-- l * allp (p --> (l' -* g')) ->
g * F |-- l * allp (p --> (l' -* g' * Basics.const F)).