fact: Definition rectS {A} (P:forall {n}, t A (S n) -> Type) (bas: forall a: A, P (a :: [])) (rect: forall a {n} (v: t A (S n)), P v -> P (a :: v)) := fix rectS_fix {n} (v: t A (S n)) : P v := match v with |@cons _ a 0 v => match v with |nil _ => bas a |_ => fun devil => False_ind (@IDProp) devil end |@cons _ a (S nn') v => rect a v (rectS_fix v) |_ => fun devil => False_ind (@IDProp) devil end.
imports: Arith_base