fact: Fixpoint term_rect t : P t := match t as t return P t with | Var x => H1 x | Fun f v => let fix terms_rect n (v : terms n) : Q v := match v as v return Q v with | Vnil => H3 | Vcons t' v' => H4 (term_rect t') (terms_rect _ v') end in H2 f (terms_rect (arity f) v) end.
imports: CoLoR(ListUtil LogicUtil EqUtil BoolUtil NatUtil VecUtil VecMax ListMax)