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.

(* Specifications: *)
Lemma exclusive_update : forall {A} (v v' : A) p, excl p v |-- |==> excl p v'.
Local Obligation Tactic := idtac.