End SepRead.
Section SepWrite.
Variables (A : Type) (x : ptr) (v : A).
Definition write_s : spec unit :=
(fun i => exists B : Type, exists y : B, i = x :-> y,
fun y i m => y = Val tt /\ m = x :-> v).

(* Specifications: *)
Lemma writeP : Model.conseq (Model.write_s x v) [write_s].
Definition write : STsep write_s := Model.Do (Model.write x v) writeP.