Goal:
  
  A : Type
  P : tree A -> Type
  empty : P Empty
  node : 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)
  ============================
   (forall m r : tree' A, Node001 r = m -> True)


DEBUG:Going to execute:
simpl; intros; destruct_all_rec_calls;
            repeat (destruct_conjs; simpl proj1_sig in *); subst *;
            autoinjections; try discriminates;
            try (solve
             [ red; intros; destruct_conjs; autoinjections; discriminates ])