Set Implicit Arguments.
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.
Hint Resolve writable_readable : core.
Arguments glb_Rsh_not_top sh _ : clear implicits.
Hint Resolve writable_share_top : core.
Hint Resolve writable_readable_share : core.
Definition extern_retainer := fst (Share.split Share.Lsh).
Definition Ews (* extern_write_share *) :=
Share.lub extern_retainer Share.Rsh.
Hint Resolve readable_nonidentity : core.

Lemma join_sub_readable:
forall sh sh', sepalg.join_sub sh sh' -> readable_share sh -> readable_share sh'.