Proof with auto.
intro sh.
destruct (eq_dec sh top); subst.
left. apply fullshare_full.
right. intro. apply n.
generalize (Share.top_correct sh);intro.
apply leq_join_sub in H0.
destruct H0.
specialize ( H x). spec H. exists top...
specialize ( H sh top (join_comm H0))...
Qed.

(* Specifications: *)
Lemma rel_congruence : forall a x1 x2,
join_sub x1 x2 ->
join_sub (rel a x1) (rel a x2).
Lemma share_split_injective:
forall sh1 sh2, Share.split sh1 = Share.split sh2 -> sh1=sh2.
Lemma share_joins_constructive:
forall sh1 sh2 : t , joins sh1 sh2 ->  {sh3 | join sh1 sh2 sh3}.
Lemma share_join_sub_constructive:
forall sh1 sh3 : t , join_sub sh1 sh3 ->  {sh2 | join sh1 sh2 sh3}.
Lemma triple_join_exists_share : Trip_alg t.
Lemma nonemp_split_neq1: forall sh sh1 sh2, nonidentity sh -> split sh = (sh1, sh2) -> sh1 <> sh.
Proof with auto.