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. (* move me! *)

(* Specifications: *)
Lemma dec_readable sh : {readable_share sh}+{~readable_share 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.