End Maps_Disjoint.
End Maps.
Notation maps_add l := (fold_right map_add empty_map l).
Hint Resolve empty_map_incl empty_map_disjoint all_disjoint_nil.
Section GHist.
(* Ghost histories in the style of Nanevsky *)
Context {hist_el : Type}.
Notation hist_part := (nat -> option hist_el).
Definition hist_sub sh (h : hist_part) hr := sh <> Share.bot /\ if eq_dec sh Tsh then h = hr
else map_incl h hr.

(* Specifications: *)
Lemma completable_alt : forall sh h hr, @completable map_disj_PCM (Some (sh, h)) hr <-> hist_sub sh h hr.
Lemma hist_sub_upd : forall sh h hr t' e (Hsub : hist_sub sh h hr),
hist_sub sh (map_upd h t' e) (map_upd hr t' e).