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_readable1:
forall sh1 sh2 sh3,
join sh1 sh2 sh3 ->
readable_share sh1 -> readable_share sh3.