fact: Fixpoint doTripletFs (L : list triplet) : rArray vM -> mbDT := fun Ar => match L with | nil => quatuor _ _ _ _ Ar false nil emptyTrace | a :: L1 => match doTripletF Ar a with | None => doTripletFs L1 Ar | Some (triple Ar' true L') => quatuor _ _ _ _ Ar' true L' (tripletTrace a) | Some (triple Ar' _b' nil) => doTripletFs L1 Ar' | Some (triple Ar' _b' L') => match doTripletFs L1 Ar' with | quatuor Ar'' b'' L'' T'' => quatuor _ _ _ _ Ar'' b'' (appendRz L' L'') (seqTrace (tripletTrace a) T'') end end end.