Definition writable0_share (sh: share) :=
    join_sub Share.Rsh sh.

(* Specifications: *)
Lemma writable_writable0: forall sh, writable_share sh -> writable0_share sh.
Lemma writable0_readable: forall sh, writable0_share sh -> readable_share sh.
Lemma writable0_Rsh: writable0_share Share.Rsh.
Lemma join_writable0_readable: forall {sh1 sh2 sh}, join sh1 sh2 sh -> writable0_share sh1 -> readable_share sh2 -> False.
Lemma join_writable01: forall sh1 sh2 sh, join sh1 sh2 sh -> writable0_share sh1 -> writable0_share sh.
Lemma writable0_share_dec: forall sh, {writable0_share sh} + {~ writable0_share sh}.
Lemma writable0_share_glb_Rsh: forall sh, writable0_share sh -> writable0_share (Share.glb Share.Rsh sh).
Lemma glb_split_lemma1: forall a b, Share.glb Share.Rsh a = Share.glb Share.Rsh b -> Share.glb Share.Rsh (fst (Share.split a)) = Share.glb Share.Rsh (fst (Share.split b)).
Lemma glb_split_lemma2: forall a b, Share.glb Share.Rsh a = Share.glb Share.Rsh b -> Share.glb Share.Rsh (snd (Share.split a)) = Share.glb Share.Rsh (snd (Share.split b)).
Lemma fst_split_glb_orthogonal: forall sh : share, identity (Share.glb Share.Rsh (fst (Share.split sh))) -> identity (Share.glb Share.Rsh sh).
Lemma snd_split_glb_orthogonal: forall sh : share, identity (Share.glb Share.Rsh (snd (Share.split sh))) -> identity (Share.glb Share.Rsh sh).
Lemma writable_not_join_readable: forall sh1 sh2, joins sh1 sh2 -> writable_share sh1 -> ~ readable_share sh2.
Lemma writable_not_join_writable : forall sh1 sh2, joins sh1 sh2 -> writable_share sh1 -> ~ writable_share sh2.
Lemma only_bot_joins_top: forall sh, joins Share.top sh -> sh = Share.bot.
Lemma writable0_right: forall sh, writable0_share (Share.glb Share.Rsh sh) -> writable0_share sh.
Lemma join_readable_unreadable: forall sh1 sh2 sh3, join sh1 sh2 sh3 -> ~ writable0_share sh1 -> ~ readable_share sh2 -> ~ writable0_share sh3.
Lemma readable_glb: forall sh, readable_share sh -> readable_share (Share.glb Share.Rsh sh).
Lemma unreadable_glb: forall sh, ~readable_share sh -> ~readable_share (Share.glb Share.Rsh sh).
Lemma nonreadable_emptyshare: ~ readable_share emptyshare.
Lemma join_comp_Tsh: forall sh, sepalg.join sh (Share.comp sh) Tsh.