Definition Tsh : share := Share.top.Definition nonempty_share (sh: share) :=
       sepalg.nonidentity sh.Definition readable_share (sh: share) :=
       nonempty_share (Share.glb Share.Rsh sh).Definition writable_share (sh: share) :=
    nonempty_share (Share.glb Share.Lsh sh) /\ join_sub Share.Rsh sh.

(* Specifications: *)
Lemma lub_Lsh_Rsh: Share.lub Share.Lsh Share.Rsh = Share.top.
Lemma glb_Lsh_Rsh: Share.glb Share.Lsh Share.Rsh = Share.bot.
Lemma readable_share_dec: forall sh, {readable_share sh}+{~ readable_share sh}.
Lemma writable_share_dec: forall sh, {writable_share sh} + {~ writable_share sh}.
Lemma writable_readable: forall sh, writable_share sh -> readable_share sh.
Lemma readable_share_top: readable_share Share.top.
Lemma top_pfullshare: forall psh, pshare_sh psh = Share.top -> psh = pfullshare.
Lemma fst_split_fullshare_not_bot: fst (Share.split fullshare) <> Share.bot.
Lemma fst_split_fullshare_not_top: fst (Share.split fullshare) <> Share.top.
Lemma glb_Rsh_not_top: forall sh, Share.glb Share.Rsh sh <> Share.top.
Lemma writable_share_top: writable_share Tsh.
Lemma writable_readable_share: forall sh, writable_share sh -> readable_share sh.