(*D11*)
 Definition sub (x y : canonTree) : option canonTree :=
  match eq_dec (glb x y) y with
  | left _ => Some (glb x (comp y))
  | right _ => None
  end.

Lemma mkCanon_lub : forall t11 t12 t21 t22 t31 t32, lub (exist _ (mkCanon (Node t11 t12)) (mkCanon_correct _)) (exist _ (mkCanon (Node t21 t22)) (mkCanon_correct _)) = (exist _ (mkCanon (Node t31 t32)) (mkCanon_correct _))<-> lub (exist _ (mkCanon t11) (mkCanon_correct _)) (exist _ (mkCanon t21) (mkCanon_correct _)) = (exist _ (mkCanon t31) (mkCanon_correct _))/\ lub (exist _ (mkCanon t12) (mkCanon_correct _)) (exist _ (mkCanon t22) (mkCanon_correct _)) = (exist _ (mkCanon t32) (mkCanon_correct _)).