Section ghost.
Context {RA: Ghost}.
(* own isn't precise unless the ghost is a Disj_alg. Is this a problem? *)
End ghost.
Program Instance exclusive_PCM A : Ghost := { valid a := True;
Join_G := Join_lower (Join_discrete A) }.
Definition excl {A} g a := own(RA := exclusive_PCM A) g (Some a) NoneP.

Lemma exclusive_update : forall {A} (v v' : A) p, excl p v |-- |==> excl p v'.