(* useful when we only want to deal with full masters *)
Definition ghost_master1 a p := ghost_master Tsh a p.Definition pos_PCM := ghost_PCM.pos_PCM.Definition ref_PCM := ghost_PCM.ref_PCM.Notation completable := ghost_PCM.completable.Definition ghost_reference g a := own(RA := ref_PCM P) g (None, Some a) NoneP.Definition ghost_part g sh a := own(RA := ref_PCM P) g (Some (sh, a), None) NoneP.Definition ghost_part_ref g sh a r :=
  own(RA := ref_PCM P) g (Some (sh, a), Some r) NoneP.

(* Specifications: *)
Lemma ghost_part_ref_join : forall g (sh : share) a b, ghost_part g sh a * ghost_reference g b = ghost_part_ref g sh a b.
Lemma self_completable : forall a, completable (Some (Tsh, a)) a.