aN       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~           Safe-Inferred !" #$%        !" #$%  Safe-Inferred!&'()*+,-./01234567&'()*+,-./01234567 Safe-Inferred8 !"#$%&'9:;  !"#$%&' !"#$%&' 8 !"#$%&'9:; Safe-Inferred()*+,-./0123456789:;<=>?@<=>()*+,-./0123456789:;<=>?@451230-./,6()*+789:;<=>?@()*+,-./0123456789:;<=>?@<=> Safe-InferredABCDEFGHABCDEFGHABCDEFGHABCDEFGHNone IJKLMNOPQ IJKLMNOPQ IJKLMNOPQ IJKLMNOPQNone6RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?@ABCDEF.RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.efghijklmadcbnopqrstuvwxy\]^_`XYZ[UVWRSTz{|}~!RSTUVWXYZ[\]^_`adcbefghijklmnopqrstuvwxyz{|}~?@ABCDEFNoneGHIJKLMNOPQRS GHIJKLNMOPQRS None None A signature. 5The class of things that can be used as a signature. If  withDepth n is in your signature, 0 QuickSpec will consider terms of up to depth n  (the default is 3). If  withTests n is in your signature,  QuickSpec will run at least n tests  (the default is 500). sig `without` xs will remove the functions  in xs from the signature sig.  Useful when you want to use   but exclude some functions.  Example: prelude (undefined :: A) `without` ["head", "tail"].  A constant. A unary function. A binary function. A ternary function. A function of arity 4. ?Mark all the functions in a signature as background functions. UQuickSpec will only print a law if it contains at least one non-background function. The functions in e.g. ' are declared as background functions.  Similar to x(, but takes a generator as a parameter. gvars xs (arbitrary :: Gen a) is the same as  vars xs (undefined :: a). 1Declare a set of variables of a particular type.  For example, vars ["x","y","z"] (undefined :: Int)  defines three variables, x, y and z , of type T. A constant. The same as . A constant. The same as ~. A unary function. A binary function. A ternary function. A function of four arguments. $An observation function of arity 1. $An observation function of arity 2. $An observation function of arity 3. $An observation function of arity 4. KUVWXYFF@UVWXY NoneA type with two elements.  Use this instead of A if testing doesn't work well because  the domain of A is too large.  Just a type. ? You can instantiate your polymorphic functions at this type # to include them in a signature. *A signature containing boolean functions:  (Z), ([), \, ], ^. .A signature containing arithmetic operations:  0, 1, (_), (`).  Instantiate it with e.g. arith (undefined :: T). (A signature containing list operations:  [], (:), a, b, (c).  Instantiate it with e.g. lists (undefined :: ). /A signature containing higher-order functions:  (d), e, and some function variables.  Useful for testing f. The QuickSpec prelude. 2 Contains boolean, arithmetic and list functions,  and some variables.  Instantiate it as e.g. prelude (undefined :: ). gh gh Noneii NoneNonejjjNone        None   klmno           klmnoNoneRun QuickSpec on a signature. AGenerate random terms from a signature. Useful when QuickSpec is G generating too many terms and you want to know what they look like.    None##p !"#$%&'(!)"*#+,- ./01234567899:;<=<>?@@ABBCDEFGHIJKLMNOPQR(STUVWXYZ[\]^^_``abbcdeefghijklmmnopqrstuvwxyz{|}~  O P Q R ( S                  ~         * " #    c  /!"#$%&'()*+,-./01#23456789:; < = > ? @9AB9AC9AD9:E9:FGHGIJKJLMNMOMPMQ R S TUVWXYZ[ quickspec-0.9Test.QuickSpec.Utils.Typeable"Test.QuickSpec.Reasoning.UnionFind*Test.QuickSpec.Reasoning.CongruenceClosureTest.QuickSpec.Utils.TypedTest.QuickSpec.Utils.TypeMapTest.QuickSpec.UtilsTest.QuickSpec.TermTest.QuickSpec.TestTreeTest.QuickSpec.Utils.TypeRelTest.QuickSpec.SignatureTest.QuickSpec.PreludeTest.QuickSpec.Equation1Test.QuickSpec.Reasoning.NaiveEquationalReasoningTest.QuickSpec.GenerateTest.QuickSpec.ApproximateTest.QuickSpec.MainTest.QuickSpecprelude"Test.QuickSpec.Utils.MemoValuationbaseData.Typeable.InternalTypeable Typeable1 Typeable2 Replacement:>UFSrunUFevalUFexecUFinitialnewSym=:=repisRepCCfunUseargUselookup$$=?=runCCevalCCexecCCfrozenTypeRep unTypeReptypeOftypeOf1castgcast mkTyConApp typeRepTyCon splitTyConAppmkFunTyTaggedtageraseWitness WitnessedwitnessListOunOSome witnessTypetaggedsomesome2mapSomemapSome2mapSomeMsomeType someWitness splitArrow rightArrowTypeMapempty singletonfromListtoList mapValues mapValues2repeatM partitionByisSorted isSortedByusortmergeorElse unbufferedspoonyConstant unConstantVariable unVariableAtomsymvalueExprtermarityevalTermAppConstVarSymbolindexname symbolAritysilentundef symbolTypesymbolshowOpisOp isUndefinedsymbolsdepthsizeholesfunctorargsfunsvarsmapVars mapVariable mapConstant valuationvarconapp TestResultsTestTreetermsuniontestdiscretecutOffnumTestsclassesrepsTypeRelgatherdisperseclassifyObserverUsedSig constants variables observersords witnesses maxDepth_ minTests_ Signature signaturemaxDepth updateDepthminTestsupdateMinTestsuses summariseobserveemptySig constantSig variableSig observerSigtypeSigordSig withDepth withTestswithout undefinedSigprimCon0primCon1primCon2primCon3primCon4blind0blind1blind2blind3blind4ord observing backgroundgvarsfun0fun1fun2fun3fun4 observer1 observer2 observer3 observer4testableconstantApplications constantArgs constantRessaturatedTypesinhabitedTypes argumentTypes variableTypes witnessArrow lhsWitnesses findWitness lookupWitness disambiguateTwoOneCBAboolsarithlistsEquation:=: showEquation equationsSubstEQUniverseContextreluniversecreateUniverserunEQevalEQexecEQliftCC unifiableunifysubstssubstflattengetputterms'test'genSeedsgenerate eraseClassesPartialunliftedGPPlugunPlugpluglifted approximate pobserver genPartialpvars undefinedsSigprunedefines definitionsrunTool quickSpec sampleList sampleTermslinks modifyLinks modifySymputLinksufFlatEqn:=lookup2insert2delete2liftUF invariant modifyFunUse modifyArgUse addFunUses addArgUses modifyLookup putLookup propagate propagate1 updateUses $fShowTypeRep $fOrdTypeRep $fEqTypeRep $fShowSome $fOrdSome$fEqSome $fShowExpr $fOrdExpr$fEqExpr $fShowTerm $fOrdTerm $fOrdSymbol $fEqSymbol $fShowSymbolResults TestTree'TreerestbranchesNonNilNiltreeunion'unsortedClassesghc-prim GHC.TypesInt $fMonoidSig $fShowUsed $fShowSig $fSignature[]$fSignatureSig GHC.Classes||&&notTrueFalseGHC.Num+*GHC.ListheadtailGHC.Base++.idmap$fCoArbitraryTwo$fArbitraryTwo$fShowEquation memoValuation $fPartial[] $fPartialBool$fPartialInteger $fPartialInt $fPartial()