fact: Definition mutateCheckManyWith {A P : Type} {_: Checker.Checkable P} {mutA: Mutateable A} (args : Args) (a : A) (ps : A -> list P) := let mutants := mutate a in Show.trace ("Fighting " ++ show (List.length mutants) ++ " mutants") (List.fold_left (fun n m => match n with (n1,n2) => let kill := List.existsb found_bug (List.map (quickCheckWith args) (ps m)) in let n1' := n1 + (if kill then 1 else 0) in let msg := message kill n1' n2 in Show.trace msg (n1', n2 + 1) end) mutants (0, 0)).
imports: QuickChick List Coq.Strings.String