fact: Fixpoint dilemma1RR (f : list rZ -> rArray vM -> mbDT) (n1 : nat) {struct n1} : rArray vM -> mbDT := fun Ar => match dilemma1R f zero n Ar with | quatuor Ar1 true L1 T1 => quatuor _ _ _ _ Ar1 true L1 T1 | quatuor Ar1 false nil T1 => quatuor _ _ _ _ Ar1 false nil T1 | quatuor Ar1 false L1 T1 => match n1 with | O => quatuor _ _ _ _ Ar1 false L1 T1 | S m => match dilemma1RR f m Ar1 with | quatuor Ar2 b L2 T2 => quatuor _ _ _ _ Ar2 b (appendRz L1 L2) (appTrace T1 T2) end end end.