Definition do' : STsep s2 := Model.Do e doP.
End SepConseq.
Notation "'Do' e" := (do' e _) (at level 80).
Section SepRead.
Variables (A : Type) (x : ptr).
Definition read_s : spec A :=
(fun i => exists v : A, i = x :-> v,
fun y i m => i = m /\ forall v, i = x :-> v -> y = Val v).

(* Specifications: *)
Lemma readP : Model.conseq (Model.read_s A x) [read_s].
Definition read : STsep read_s := Model.Do (Model.read A x) readP.