Instance Join_rshare: Join rshare :=
  fun a b c => join (proj1_sig a) (proj1_sig b) (proj1_sig c).Instance Perm_rshare: Perm_alg rshare.

(* Specifications: *)
Lemma dec_readable sh : {readable_share sh}+{~readable_share sh}.
Lemma dec_pure_readable sh : {pure_readable_share sh}+{~pure_readable_share sh}.
Lemma dec_share_identity': forall sh: Share.t, Decidable.decidable (identity sh).
Lemma not_not_share_identity: forall sh: Share.t, ~ ~ (identity sh) -> identity sh.
Lemma join_readable_part_eq: forall sh1 (rsh1: readable_share sh1) sh2 (nsh2: ~readable_share sh2) sh3 (rsh3: readable_share sh3), join sh1 sh2 sh3 -> readable_part rsh1 = readable_part rsh3.
Lemma join_readable_part: forall sh1 (rsh1: readable_share sh1) sh2 (rsh2: readable_share sh2) sh3 (rsh3: readable_share sh3), join sh1 sh2 sh3 -> join (readable_part rsh1) (readable_part rsh2)(readable_part rsh3).
Lemma share_self_join_bot: forall sh: Share.t, join sh sh sh -> sh = Share.bot.