CW>W      !"#$%&'()*+,-./ 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  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           Safe-Inferred)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.%#Run one test suite on all mutants B >>> 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()*WXYZ[\]+^,-._`abcdef()*+,-.*,-.+()()*]\[ZYXW+^,-._`abcdef None/all available operators0comparison operators1 predicates2binary arithmetic3arithmetic on lists/0123g/01230123//0123g None 456789:;<=>?@ 456789:;<=>?@ =?>456789:;<@456789:;<=?>@ NoneHMA:apply a mutating function on a piece of code one at a timeC9select all code components satisfying a certain predicateDVspecial case of selectMany, which selects the first components satisfying a predicateEselecting all relevant opsABCDEABCDECDEABABCDE NoneHIMFThe FD function is a wrapper to genMutantsWith with standard configuratonGThe G 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.HMutating a function's code using a bunch of mutation operators (In all the three mutate functions, we assume working with functions declaration.)JGiven 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 "<"L~Generate all operators for permutating pattern matches in a function. We don't deal with permutating guards and case for now.O0Parse a module. Input is the content of the fileU&negating boolean in if/else statementsVnegating boolean in GuardsFGHIJKLMNOPQRSTUVFGHIJKLMNOPQRSTUVFGHIJKLMNOPQRSTUVFGHIJKLMNOPQRSTUVh  !"#$%&''()*+,-./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 [ \ ] ^ _ `abcdefghijklmnop qrMuCheck-0.1.2.2MuCheck.Utils.CommonMuCheck.Run.CommonMuCheck.Utils.PrintMuCheck.Run.QuickCheckMuCheck.Run.HUnitMuCheck.Run.HspecMuCheck.Interpreter MuCheck.MuOpMuCheck.OperatorsMuCheck.ConfigMuCheck.Utils.SybMuCheck.Mutationchoosecoupling genFileNamesreplacesafeHeadsamplesampleFremElt Summarizable testSummary isSuccessMutantFilenameTSumtsum_numMutantstsum_loadErrortsum_notKilled tsum_killed tsum_otherstsum_logInterpreterOutput./.showASshowA$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