úÎŒ€°2Ł      !"#$%&'()*+,-./0123456 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąSafe‘Ł€„Чš©ȘNone>?V ì« is idempotent for any type:(idempotentOnArbitrary (id :: Int -> Int)Ź6, given any input, is idempotent for any type as well:7\int -> idempotentOnArbitrary (const int :: Int -> Int)None>?V$4The given generator generates only valid data points6The given generator generates only invalid data pointsNone>?V4u Associative(\star) \quad\equiv\quad \forall a, b, c: (a \star b) \star c = a \star (b \star c) &associative ((*) :: Int -> Int -> Int)&associative ((+) :: Int -> Int -> Int) 1associativeOnArbitrary ((*) :: Int -> Int -> Int)1associativeOnArbitrary ((+) :: Int -> Int -> Int)  None>?Vz ^ Commutative(\star) \quad\equiv\quad \forall a, b: a \star b = b \star a /commutative ((+) :: Double -> Double -> Double)/commutative ((*) :: Double -> Double -> Double) &commutative ((+) :: Int -> Int -> Int)&commutative ((*) :: Int -> Int -> Int) 1commutativeOnArbitrary ((+) :: Int -> Int -> Int)1commutativeOnArbitrary ((*) :: Int -> Int -> Int)  None>?V.t [ LeftIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (b \star a) \doteq a =leftIdentityOnValid (flip ((^) :: Double -> Int -> Double)) 10leftIdentity (flip ((^) :: Int -> Int -> Int)) 1;leftIdentityOnArbitrary (flip ((^) :: Int -> Int -> Int)) 1\ RightIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (a \star b) \doteq a 7rightIdentityOnValid ((^) :: Double -> Int -> Double) 1*rightIdentity ((^) :: Int -> Int -> Int) 15rightIdentityOnArbitrary ((^) :: Int -> Int -> Int) 1} Identity(\star, \doteq, b) \quad\equiv\quad LeftIdentity(\star, \doteq, b) \wedge RightIdentity(\star, \doteq, b) 5identityOnValid ((*) :: Double -> Double -> Double) 15identityOnValid ((+) :: Double -> Double -> Double) 0%identity ((*) :: Int -> Int -> Int) 1%identity ((+) :: Int -> Int -> Int) 00identityOnArbitrary ((*) :: Int -> Int -> Int) 10identityOnArbitrary ((+) :: Int -> Int -> Int) 0A binary operation An equalityA candidate left-identity An elementA binary operation An equalityA candidate left-identityA binary operationA candidate left-identityA binary operation An equalityA candidate right-identity An elementA binary operation An equalityA candidate right-identityA binary operationA candidate right-identityNone>?V/L  None0D !"#$ #$"!None>?V6(%dThe function produces valid output when the input is generated as specified by the given generator.&CThe function produces valid output when the input is generated by genValid'CThe function produces valid output when the input is generated by  genUnchecked(CThe function produces valid output when the input is generated by  arbitrary %&'()*+,-./0 %&'()*+,-./0None>?V?è1M Antireflexive(\prec) \quad\equiv\quad \forall a: \neg (a \prec a) 38antireflexivityOnValid ((<) :: Double -> Double -> Bool)9antireflexivityOnValid ((/=) :: Double -> Double -> Bool)8antireflexivityOnValid ((>) :: Double -> Double -> Bool)4+antireflexivity ((<) :: Int -> Int -> Bool),antireflexivity ((/=) :: Int -> Int -> Bool)+antireflexivity ((>) :: Int -> Int -> Bool)56antireflexivityOnArbitrary ((<) :: Int -> Int -> Bool)7antireflexivityOnArbitrary ((/=) :: Int -> Int -> Bool)6antireflexivityOnArbitrary ((>) :: Int -> Int -> Bool)1 A relation An element1234512345 None>?VX~6 Antisymmetric(\prec, \doteq) \quad\equiv\quad \forall a, b: ((a \prec b) \wedge (b \prec a)) \Rightarrow (a \doteq b) 95antisymmetryOnValid ((>) :: Double -> Double -> Bool)6antisymmetryOnValid ((>=) :: Double -> Double -> Bool)6antisymmetryOnValid ((<=) :: Double -> Double -> Bool)5antisymmetryOnValid ((<) :: Double -> Double -> Bool)JantisymmetryOnValid (Data.List.isPrefixOf :: [Double] -> [Double] -> Bool)JantisymmetryOnValid (Data.List.isSuffixOf :: [Double] -> [Double] -> Bool)IantisymmetryOnValid (Data.List.isInfixOf :: [Double] -> [Double] -> Bool):(antisymmetry ((>) :: Int -> Int -> Bool))antisymmetry ((>=) :: Int -> Int -> Bool))antisymmetry ((<=) :: Int -> Int -> Bool)(antisymmetry ((<) :: Int -> Int -> Bool)=antisymmetry (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)=antisymmetry (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool)<antisymmetry (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)>antisymmetry ((\x y -> even x && odd y) :: Int -> Int -> Bool);3antisymmetryOnArbitrary ((>) :: Int -> Int -> Bool)4antisymmetryOnArbitrary ((>=) :: Int -> Int -> Bool)4antisymmetryOnArbitrary ((<=) :: Int -> Int -> Bool)3antisymmetryOnArbitrary ((<) :: Int -> Int -> Bool)HantisymmetryOnArbitrary (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)HantisymmetryOnArbitrary (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool)GantisymmetryOnArbitrary (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)IantisymmetryOnArbitrary ((\x y -> even x && odd y) :: Int -> Int -> Bool)6 A relationAn equivalence relation Two elements6789:;6789:; None>?Vk<D Reflexive(\prec) \quad\equiv\quad \forall a: (a \prec a) >5reflexivityOnValid ((<=) :: Double -> Double -> Bool)5reflexivityOnValid ((==) :: Double -> Double -> Bool)5reflexivityOnValid ((>=) :: Double -> Double -> Bool)IreflexivityOnValid (Data.List.isPrefixOf :: [Double] -> [Double] -> Bool)IreflexivityOnValid (Data.List.isSuffixOf :: [Double] -> [Double] -> Bool)HreflexivityOnValid (Data.List.isInfixOf :: [Double] -> [Double] -> Bool)?(reflexivity ((<=) :: Int -> Int -> Bool)(reflexivity ((==) :: Int -> Int -> Bool)(reflexivity ((>=) :: Int -> Int -> Bool)<reflexivity (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)<reflexivity (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool);reflexivity (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)@3reflexivityOnArbitrary ((<=) :: Int -> Int -> Bool)3reflexivityOnArbitrary ((==) :: Int -> Int -> Bool)3reflexivityOnArbitrary ((>=) :: Int -> Int -> Bool)GreflexivityOnArbitrary (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)GreflexivityOnArbitrary (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool)FreflexivityOnArbitrary (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)< A relation An element<=>?@<=>?@ None>?VqđAc Symmetric(\prec) \quad\equiv\quad \forall a, b: (a \prec b) \Leftrightarrow (b \prec a) C2symmetryOnValid ((==) :: Double -> Double -> Bool)2symmetryOnValid ((/=) :: Double -> Double -> Bool)D%symmetry ((==) :: Int -> Int -> Bool)%symmetry ((/=) :: Int -> Int -> Bool)E0symmetryOnArbitrary ((==) :: Int -> Int -> Bool)0symmetryOnArbitrary ((/=) :: Int -> Int -> Bool)A A relation Two elementsABCDEABCDE None>?VŠ5Fx Transitive(\prec) \quad\equiv\quad \forall a, b, c: ((a \prec b) \wedge (b \prec c)) \Rightarrow (a \prec c) H5transitivityOnValid ((>) :: Double -> Double -> Bool)6transitivityOnValid ((>=) :: Double -> Double -> Bool)6transitivityOnValid ((==) :: Double -> Double -> Bool)6transitivityOnValid ((<=) :: Double -> Double -> Bool)5transitivityOnValid ((<) :: Double -> Double -> Bool)JtransitivityOnValid (Data.List.isPrefixOf :: [Double] -> [Double] -> Bool)JtransitivityOnValid (Data.List.isSuffixOf :: [Double] -> [Double] -> Bool)ItransitivityOnValid (Data.List.isInfixOf :: [Double] -> [Double] -> Bool)I(transitivity ((>) :: Int -> Int -> Bool))transitivity ((>=) :: Int -> Int -> Bool))transitivity ((==) :: Int -> Int -> Bool))transitivity ((<=) :: Int -> Int -> Bool)(transitivity ((<) :: Int -> Int -> Bool)=transitivity (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)=transitivity (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool)<transitivity (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)J3transitivityOnArbitrary ((>) :: Int -> Int -> Bool)4transitivityOnArbitrary ((>=) :: Int -> Int -> Bool)4transitivityOnArbitrary ((==) :: Int -> Int -> Bool)4transitivityOnArbitrary ((<=) :: Int -> Int -> Bool)3transitivityOnArbitrary ((<) :: Int -> Int -> Bool)HtransitivityOnArbitrary (Data.List.isPrefixOf :: [Int] -> [Int] -> Bool)HtransitivityOnArbitrary (Data.List.isSuffixOf :: [Int] -> [Int] -> Bool)GtransitivityOnArbitrary (Data.List.isInfixOf :: [Int] -> [Int] -> Bool)F A relationThree elementsFGHIJFGHIJNone>?VŠ”123456789:;<=>?@ABCDEFGHIJ<=>?@FGHIJ6789:;12345ABCDE None>?V‘*K$shrinkPreservesValidOnGenValid (:[])L(shrinkPreservesInvalidOnGenInvalid (:[])M"shrinkValidPreservesValid (pure 5)N8shrinkInvalidPreservesInvalid (pure (1/0) :: Gen Double)OAshrinkingStaysValid (pure 5 :: Gen Double) (\d -> [d - 1, d - 2])P6shrinkingStaysInvalid (pure (1/0) :: Gen Double) (:[])Q(shrinkingPreserves (pure 5) (:[]) (== 5)KLMNOPQKLMNOPQSafe>?V’ŸR?A class of types that are the result of functions that can failRSTRSTRSTNone>?V”ĘZ«e is its own inverse function for every type: prop> inverseFunctionsOnArbitrary id (id :: Int -> Int)WXYZ[\]^_`abcdefWXYZ[\]^_`abcdefNone>?V—ŁjCequivalentOnArbitrary ((* 2) . (+ 1)) ((+ 2) . (* 2) :: Int -> Int)n5equivalentOnArbitrary2 (+) ((+) :: Int -> Int -> Int)$ghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š$ghijklmnoprqstvuwxzy{|~}€‚ƒ„†…‡ˆ‰ŠNone>?VŠT ‹FThe function succeeds if the input is generated by the given generatorŒ3The function succeeds if the input is generated by genValid3The function succeeds if the input is generated by  genUncheckedŽ3The function succeeds if the input is generated by  arbitraryCThe function fails if the input is generated by the given generator0The function fails if the input is generated by  genInvalid‘,The function produces output that satisfies isValid@ if it is given input that is generated by the given generator.’,The function produces output that satisfies isValid, if it is given input that is generated by  arbitrary.“,The function produces output that satisfies isValid, if it is given input that is generated by  arbitrary.”,The function produces output that satisfies isValid, if it is given input that is generated by  genUnchecked.‹ŒŽ‘’“”•–—˜™š›œžŸ Ąą‹ŒŽ•–—˜™š‘’“”›œžŸ ĄąNone>?V§l\%&'()*+,-./0WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ąą\%&'()*+,-./0‹ŒŽ•–—˜™š‘’“”›œžŸ Ąąghijklmnoprqstvuwxzy{|~}€‚ƒ„†…‡ˆ‰ŠWXYZ[\]^_`abcdefNone>?VȘ€Ì­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâ  %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJRSTWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ąą– %&'()*+,-./0RST‹ŒŽ•–—˜™š‘’“”›œžŸ Ąąghijklmn‡ˆ‰Šoprqstvuwxzy{|~}€‚ƒ„†…WXYZ[\]^_`abcdef<=>?@FGHIJ6789:;12345ABCDE ă !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g hijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄÂĂĆÂĂÆÂĂÇÂĂÈÂĂÉÊËÌÊËÌÊËÍÊËÎÊËÏÊËĐÊËŃÊËÒÊËÓÊËÔÊËŐÊËÖÊËŚÊËŰÊËÙÊËÚÊËÛÊËÜÊËĘÊËȚÊËßàáâàáăàáäàáćàáæàáçàáèàáéàáêàáëàáìàáíàáîàáïàáđàáńàáòàáóàáôàáőàáöàáśàáűàáùàáúàáûàáüàáęàáțÿ3genvalidity-property-0.2.0.2-3xosaO6bXHKDkdfWYe6Aiu#Test.Validity.Functions.Idempotence"Test.Validity.GenValidity.Property&Test.Validity.Operations.Associativity&Test.Validity.Operations.Commutativity!Test.Validity.Operations.IdentityTest.Validity.Property.Utils Test.Validity.Functions.Validity'Test.Validity.Relations.Antireflexivity$Test.Validity.Relations.Antisymmetry#Test.Validity.Relations.Reflexivity Test.Validity.Relations.Symmetry$Test.Validity.Relations.Transitivity Test.Validity.Shrinking.PropertyTest.Validity.TypesTest.Validity.Functions.Inverse#Test.Validity.Functions.EquivalenceTest.Validity.Functions.CanFailPaths_genvalidity_propertyTest.Validity.OperationsTest.Validity.RelationsTest.Validity.FunctionsTest.Validity.PropertyidempotentOnGenidempotentOnValid idempotentidempotentOnArbitrarygenGeneratesValidgenGeneratesInvalidassociativeOnGensassociativeOnValids associativeassociativeOnArbitrarycommutativeOnGenscommutativeOnValids commutativecommutativeOnArbitraryleftIdentityOnElemWithEqualityleftIdentityOnGenWithEqualityleftIdentityOnGenleftIdentityOnValid leftIdentityleftIdentityOnArbitraryrightIdentityOnElemWithEqualityrightIdentityOnGenWithEqualityrightIdentityOnGenrightIdentityOnValid rightIdentityrightIdentityOnArbitrary identityOnGenidentityOnValididentityidentityOnArbitraryforAllUnchecked forAllValid forAllInvalid===><==> shouldBeValidshouldBeInvalidproducesValidsOnGenproducesValidsOnValids producesValidproducesValidsOnArbitraryproducesValidsOnGens2producesValidsOnValids2producesValid2producesValidsOnArbitrary2producesValidsOnGens3producesValidsOnValids3producesValid3producesValidsOnArbitrary3antireflexiveOnElemantireflexivityOnGenantireflexivityOnValidantireflexivityantireflexivityOnArbitrary antisymmetricOnElemsWithEqualityantisymmetryOnGensWithEqualityantisymmetryOnGensantisymmetryOnValid antisymmetryantisymmetryOnArbitraryreflexiveOnElemreflexivityOnGenreflexivityOnValid reflexivityreflexivityOnArbitrarysymmetricOnElemssymmetryOnGenssymmetryOnValidsymmetrysymmetryOnArbitrarytransitiveOnElemstransitivityOnGenstransitivityOnValid transitivitytransitivityOnArbitraryshrinkPreservesValidOnGenValid"shrinkPreservesInvalidOnGenInvalidshrinkValidPreservesValidshrinkInvalidPreservesInvalidshrinkingStaysValidshrinkingStaysInvalidshrinkingPreservesCanFail hasFailedresultIfSucceeded$fCanFailEither$fCanFailMaybeinverseFunctionsOnGeninverseFunctionsOnValidinverseFunctionsinverseFunctionsOnArbitrary$inverseFunctionsIfFirstSucceedsOnGen&inverseFunctionsIfFirstSucceedsOnValidinverseFunctionsIfFirstSucceeds*inverseFunctionsIfFirstSucceedsOnArbitrary%inverseFunctionsIfSecondSucceedsOnGen'inverseFunctionsIfSecondSucceedsOnValid inverseFunctionsIfSecondSucceeds+inverseFunctionsIfSecondSucceedsOnArbitraryinverseFunctionsIfSucceedOnGen inverseFunctionsIfSucceedOnValidinverseFunctionsIfSucceed$inverseFunctionsIfSucceedOnArbitraryequivalentOnGenequivalentOnValid equivalentequivalentOnArbitraryequivalentOnGens2equivalentOnValids2 equivalent2equivalentOnArbitrary2 equivalentWhenFirstSucceedsOnGen"equivalentWhenFirstSucceedsOnValid&equivalentWhenFirstSucceedsOnArbitraryequivalentWhenFirstSucceeds"equivalentWhenFirstSucceedsOnGens2$equivalentWhenFirstSucceedsOnValids2'equivalentWhenFirstSucceedsOnArbitrary2equivalentWhenFirstSucceeds2!equivalentWhenSecondSucceedsOnGen#equivalentWhenSecondSucceedsOnValid'equivalentWhenSecondSucceedsOnArbitraryequivalentWhenSecondSucceeds#equivalentWhenSecondSucceedsOnGens2%equivalentWhenSecondSucceedsOnValids2(equivalentWhenSecondSucceedsOnArbitrary2equivalentWhenSecondSucceeds2equivalentWhenSucceedOnGenequivalentWhenSucceedOnValidequivalentWhenSucceed equivalentWhenSucceedOnArbitraryequivalentWhenSucceedOnGens2equivalentWhenSucceedOnValids2!equivalentWhenSucceedOnArbitrary2equivalentWhenSucceed2equivalentOnGens3equivalentOnValids3 equivalent3equivalentOnArbitrary3 succeedsOnGensucceedsOnValidsucceedssucceedsOnArbitrary failsOnGenfailsOnInvalidvalidIfSucceedsOnGenvalidIfSucceedsOnValidvalidIfSucceedsOnArbitraryvalidIfSucceedssucceedsOnGens2succeedsOnValids2 succeeds2succeedsOnArbitrary2 failsOnGens2failsOnInvalid2validIfSucceedsOnGens2validIfSucceedsOnValids2validIfSucceeds2validIfSucceedsOnArbitrary2validIfSucceedsOnGens3validIfSucceedsOnValids3validIfSucceeds3validIfSucceedsOnArbitrary3version getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseGHC.BaseidconstMonoidmemptymappendmconcat'validity-0.5.0.0-KUXfF57kEp8ANLGKT9YxF9 Data.Validity Validation unValidationValidationChainLocationViolatedValidityvalidateisValidtrivialValidationcheckdeclareinvalidvalidannotatedelveconstructValidconstructValidUnsafe checkValidityprettyValidation isInvalid*genvalidity-0.5.0.2-FS1XOFFPdKbFUiAnOL77MBData.GenValidityuncheckedSubtermsuncheckedRecursivelyShrinkgShrinkUnchecked genListOf arbPartition genSplit5 genSplit4 genSplit3genSplitupToshrinkT3shrinkT2 GenUnchecked genUncheckedshrinkUncheckedGenValidgenValid shrinkValid GenInvalid genInvalid shrinkInvalid GGenUnchecked gGenUncheckedGUncheckedRecursivelyShrinkgUncheckedRecursivelyShrinkGUncheckedSubtermsgUncheckedSubtermsGUncheckedSubtermsInclgUncheckedSubtermsIncl