Goal:
    A : Type  P : tree A -> Type
  ============================
   (P Empty ->
    (forall l : tree A,
     P l ->
     forall (o : option A) (r : tree A),
     P r -> not_trivially_empty l o r -> P (Node l o r)) ->
    tree' A -> A -> tree' A -> True)


DEBUG:Going to execute:
intro || (let H := fresh in
                     intro
                     H)
DEBUG LTAC Evaluated term: ((forall l : tree A,
                             P l ->
                             forall (o : option A) (r : tree A),
                             P r ->
                             not_trivially_empty l o r -> P (Node l o r)) ->
                            tree' A -> A -> tree' A -> True)
DEBUG LTAC Evaluated term: Prop