induction t; intuition; simpl in *.
destruct o.
destruct (H a).
simpl.
intuition.
econstructor.
econstructor.
eauto.
econstructor.
econstructor.
edestruct IHt1; eauto.
intuition.
edestruct H.
unfold getTreeSupport in *.
simpl in *.
eapply in_getUnique.
eapply in_or_app.
left.
eapply in_getUnique_if.
eauto.
econstructor; eauto.
edestruct IHt2; eauto.
intuition.
edestruct H.
unfold getTreeSupport in *.
simpl in *.
eapply in_getUnique.
eapply in_or_app.
right.
eapply in_getUnique_if.
eauto.
econstructor; eauto.
econstructor.
econstructor; eauto.
Qed.

(* Specifications: *)
Lemma dat_exists_bind2 : forall (A B : Set)(c1 : Comp B)(c2 : B -> Comp A) n,
well_formed_comp c1 ->
(forall b, In b (getSupport c1) -> well_formed_comp (c2 b)) ->
exists t, dat_correct_bind2 c1 c2 n t.