Instance share_cross_split : Cross_alg t.

(* Specifications: *)
Lemma bot_correct' : forall x, join_sub bot x.
Lemma top_share_nonidentity : nonidentity top.
Lemma top_share_nonunit: nonunit top.
Lemma bot_join_eq : forall x, join bot x x.
Lemma join_bot_eq : forall x, join x bot x.
Lemma bot_joins : forall x, joins bot x.
Lemma dec_share_identity : forall x:t, { identity x } + { ~identity x }.
Lemma dec_share_nonunit : forall x:t, { nonunit x } + { ~ nonunit x }.
Lemma fullshare_full : full fullshare.
Lemma join_sub_fullshare : forall sh, join_sub fullshare sh -> sh = fullshare.
Lemma dec_share_full : forall (sh : Share.t), {full sh} + {~full sh}.
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.
Lemma nonemp_split_neq2: forall sh sh1 sh2, nonidentity sh -> split sh = (sh1, sh2) -> sh2 <> sh.
Lemma bot_unit: forall sh, join emptyshare sh sh.
Lemma join_bot: join emptyshare emptyshare emptyshare.
Lemma share_rel_nonidentity: forall {sh1 sh2}, nonidentity sh1 -> nonidentity sh2 -> nonidentity (Share.rel sh1 sh2).
Lemma share_rel_nonunit: forall {sh1 sh2: Share.t}, nonunit sh1 -> nonunit sh2 -> nonunit (Share.rel sh1 sh2).
Lemma decompose_bijection: forall sh1 sh2, sh1 = sh2 <-> decompose sh1 = decompose sh2.