úÎFðA“X      !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W  Safe-InferredThe + function generates subsets of a given sizeThe Q function produces all possible pairings, and applies the given function to eachThe / function lazily generates filenames of mutantsThe M function replaces first element in a list given old and new values as a pairThe 4 function safely extracts head of a list using MaybeThe U function takes a random generator and chooses a random sample subset of given size.The ` function takes a random generator, and a fraction and returns subset of size given by fractionThe 8 function removes element at index specified from a listNone          None)simple wrapper for adding a % at the end.join lines togethermake lists into lines in text.None*+None*+None*+None*+*Datatype to hold results of the entire run"¯run quickcheck test suite on mutants > numMutants <- genMutants "qsort" "Examples/QuickCheckTest.hs" > checkQuickCheckOnMutants (take numMutants $ genFileNames -- "ExamplesQuickCheckTest.hs") Examples.QuickCheckTest\ ["quickCheckResult idEmpProp", "quickCheckResult revProp", "quickCheckResult modelProp"] ".quickcheck.log"#œrun hunit test suite on mutants > numMutants <- genMutants "qsort" "Examples/HUnitTest.hs" > checkHUnitOnMutants (take numMutants $ genFileNames "ExamplesHUnitTest.hs") Examples.HUnitTest ["runTestTT tests"] ". hunit.log"$œrun hspec test suite on mutants > numMutants <- genMutants "qsort" "Examples/HspecTest.hs" > checkHspecOnMutants (take numMutants $ genFileNames "ExamplesHspecTest.hs") Examples.HspecTest ["spec (with "qsort1")"] ". hspec.log"%VGiven the list of tests suites to check, run one test suite at a time on all mutants.&aRun one test suite on all mutants > t = runInterpreter (evalMethod "Examples/QuickCheckTest.hs" Examples.QuickCheckTest "quickCheckResult idEmp")'XGiven the filename, modulename, test to evaluate, evaluate, and return result as a pair.(Summarize the entire run  !"#$%&'(  !"#$%&'( "#$%&' !( !"#$%&'(None)*+XYZ[\]^,_-./`abcdefg)*+,-./+-./,)*)*+^]\[ZYX,_-./`abcdefg None0all available operators1comparison operators [" ","", " =","=", "/=", "=="]2!predicates ["pred", "id", "succ"]3&binary arithmetic ["+", "-", "*", "/"]4Kfunctions on lists ["sum", "product", "maximum", "minimum", "head", "last"]01234h012341234001234h None 56789:;<=>?@A 56789:;<=>?@A >@?56789:;<=A56789:;<=>@?A NoneHMB:apply a mutating function on a piece of code one at a timeD9select all code components satisfying a certain predicateEVspecial case of selectMany, which selects the first components satisfying a predicateFselecting all relevant opsBCDEFBCDEFDEFBCBCDEF NoneHIM GThe GD function is a wrapper to genMutantsWith with standard configuratonHThe HÀ function takes configuration function to mutate, filename the function is defined in, and produces mutants in the same directory as the filename, and returns the number of mutants produced.I“Mutating a function's code using a bunch of mutation operators (In all the three mutate functions, we assume working with functions declaration.)K€Given a function, generate all mutants after applying applying op once (op might be applied at different places).E.g.: op = " "==' ">" and there are two instances of "<"M~Generate all operators for permutating pattern matches in a function. We don't deal with permutating guards and case for now.NUgenerates transformations that removes one pattern match from a function definition.O)generate sub-arrays with one less elementP0Parse a module. Input is the content of the fileV&negating boolean in if/else statementsWnegating boolean in GuardsGHIJKLMNOPQRSTUVWGHIJKLMNOPQRSTUVWGHIJKLMNOPQRSTUVWGHIJKLMNOPQRSTUVWi  !"#$%&'(()*+,-./0123456789: ; < = > ? @ @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` abcdefghijklmnopq rsMuCheck-0.1.3.0Test.MuCheck.Utils.CommonTest.MuCheck.Run.CommonTest.MuCheck.Utils.PrintTest.MuCheck.Run.QuickCheckTest.MuCheck.Run.HUnitTest.MuCheck.Run.HspecTest.MuCheck.InterpreterTest.MuCheck.MuOpTest.MuCheck.OperatorsTest.MuCheck.ConfigTest.MuCheck.Utils.SybTest.MuCheck.Mutationchoosecoupling genFileNamesreplacesafeHeadsamplesampleFremElt Summarizable testSummary isSuccessMutantFilenameTSumtsum_numMutantstsum_loadErrortsum_notKilled tsum_killed tsum_otherstsum_logInterpreterOutput./.showASshowAtt$fSummarizableResult$fSummarizableCounts$fSummarizableSummaryTSSumtssum_numMutants tssum_alive tssum_errors tssum_logcheckQuickCheckOnMutantscheckHUnitOnMutantscheckHspecOnMutantsmutantCheckSummaryrunCodeOnMutants evalMethodmultipleCheckSummaryMutable==>MuOpmkMp'==>**==>*~~>allOps comparatorspredNums binAriths arithListsConfigmuOpsdoMutatePatternMatchesdoMutateValuesdoNegateIfElsedoNegateGuards maxNumMutantsgenModeGenerationModeFirstAndHigherOrderFirstOrderOnly defaultConfigonceonce' selectMany selectOne relevantOps genMutantsgenMutantsWithmutatesmutatesNmutate isFunctionD permMatchesremoveOnePMatch removeOneElemparseModuleFromFilegetDeclsputDecls selectValOps selectValOps' selectIntOpsselectIfElseBoolNegOpsselectGuardedBoolNegOpsGLDEQOQNNshowM$fMutableGuardedRhs$fMutableLiteral $fMutableDecl $fMutableExp $fMutableQOp$fMutableQName $fMutableName $fShowMuOpvarfn