Definition Lsh  : Share.t := fst (Share.split Share.top).Definition Rsh  : Share.t := snd (Share.split Share.top).Definition splice (a b: t) : t := Share.lub (rel Lsh a) (rel Rsh b).

Lemma canonTree_check: forall x y, canonicalTree x -> canonicalTree y -> (exists b, x = Leaf b /\ y = Leaf b) \/ (canonicalTree (Node x y)).