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 splice_rewrite: forall a b, splice a b = exist (fun t0 => canonicalTree t0) (mkCanon (Node (proj1_sig a) (proj1_sig b))) (mkCanon_correct _).