fact: Definition rect2 (P : forall {n} (a b : t n), Type) (H0 : forall n, @P (S n) F1 F1) (H1 : forall {n} (f : t n), P F1 (FS f)) (H2 : forall {n} (f : t n), P (FS f) F1) (HS : forall {n} (f g : t n), P f g -> P (FS f) (FS g)) : forall {n} (a b : t n), P a b := fix rect2_fix {n} (a : t n) {struct a} : forall (b : t n), P a b := match a with | @F1 m => fun (b : t (S m)) => caseS' b (P F1) (H0 _) H1 | @FS m a' => fun (b : t (S m)) => caseS' b (fun b => P (@FS m a') b) (H2 a') (fun b' => HS _ _ (rect2_fix a' b')) end.
imports: PeanoNat