fact: Definition my_P3_elim : forall (P0 : forall a : Type, C a -> tree a -> bool -> Prop) (P1 : forall a, C a -> list (tree a) -> bool -> Prop), (forall (a : Type) (a_C : C a) (a0 : a) (l : list (tree a)), P1 a a_C l (list_P3 l) -> P0 a a_C (Node a a0 l) (P a0 || list_P3 l)%bool) -> (forall (a : Type) (a_C : C a), P1 a a_C [] false) -> (forall (a : Type) (a_C : C a) t l, P0 a a_C t (tree_P3 t) -> P1 a a_C l (list_P3 l) -> P1 a a_C (t :: l) (existsb (tree_P3 ) (t :: l))) -> (forall (a : Type) (a_C : C a) (t : tree a), P0 a a_C t (tree_P3 t)) /\ (forall (a : Type) (a_C : C a) (l : list (tree a)), P1 a a_C l (list_P3 l)).
imports: Equations(Equations) Coq.Lists.List Bool