úÎnųfŅ      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒSafe<=TŽŽŽSafe<=T?A class of types that are the result of functions that can failNone<=TA Spec that specifies that  isValidFor implies isValidIIn general it is a good idea to add this spec to your test suite if the a and b in RelativeValidity a b also have a Validity instance.Example usage: TrelativeValiditySpec (Proxy :: Proxy MyDataFor) (Proxy :: Proxy MyOtherData)isValidFor a b implies  isValid a for all b isValidFor a b implies  isValid b for all a    Safe<=T x Transitive(\prec) \quad\equiv\quad \forall a, b, c: ((a \prec b) \wedge (b \prec c)) \Rightarrow (a \prec c) 4transitivityOnArbitrary ((==) :: Int -> Int -> Bool)  A relationThree elements    Safe<=Tc Symmetric(\prec) \quad\equiv\quad \forall a, b: (a \prec b) \Leftrightarrow (b \prec a) 0symmetryOnArbitrary ((==) :: Int -> Int -> Bool) A relation Two elementsSafe<=TC Reflexive(prec) \quad\equiv\quad \forall a: (a \prec a) 3reflexivityOnArbitrary ((==) :: Int -> Int -> Bool) A relation An elementSafe<=T Antisymmetric(\prec, \doteq) \quad\equiv\quad \forall a, b: ((a \prec b) \wedge (b \prec a)) \Rightarrow (a \doteq b) 4antisymmetryOnArbitrary ((<=) :: Int -> Int -> Bool) A relationAn equivalence relation Two elementsSafe<=T  None<=T Safe<=T [ LeftIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (b \star a) \doteq a %\ RightIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (a \star b) \doteq a A binary operation An equalityA candidate left-identity An element!A binary operation An equalityA candidate left-identity"A binary operationA candidate left-identity#$%A binary operation An equalityA candidate right-identity An element&A binary operation An equalityA candidate right-identity'A binary operationA candidate right-identity()*+, !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+, None<=T-./0-./0-./0-./0 None<=T1234123412341234None<=T !"#$%&'()*+,-./01234 !"#$%&'()*+,1234-./0 None<=T5A Spec that specifies that genValid% only generates valid data and that  genInvalid only generates invalid data.jIn general it is a good idea to add this spec to your test suite if you write a custom implementation of genValid or  genInvalid.Example usage: 'genValiditySpec (Proxy :: Proxy MyData)6genValid only generates valid data74The given generator generates only valid data points8genValid only generates invalid data96The given generator generates only invalid data points56789567895678956789 None<=T:A Spec that specifies that  genValidFor and  genInvalidFor work as intended.jIn general it is a good idea to add this spec to your test suite if you write a custom implementation of  genValidFor or  genInvalidFor.Example usage: CrelativeGenValiditySpec (proxy :: MyDataFor) (proxy :: MyOtherData); genValidFor b$ only generates values that satisfy  isValidFor b<genInvalidFor b+ only generates values that do not satisfy  isValidFor b:;<:;<:;<:;<None<=T=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  arbitrary?CThe function produces valid output when the input is generated by  genUnchecked@CThe function produces valid output when the input is generated by genValid =>?@ABCDEFGH =>?@ABCDEFGH =@?>ABDCEGFH =>?@ABCDEFGHNone<=TLe is its own inverse function for every type: prop> inverseFunctionsOnArbitrary id (id :: Int -> Int)IJKLMNOPQRSTUVWXIJKLMNOPQRSTUVWXIJKLMNOPQRSTUVWXIJKLMNOPQRSTUVWXNone<=T\ 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)YZ[\YZ[\YZ[\YZ[\None<=T]^_`abcdefghijklmnopqrst]^_`abcdefghijklmnopqrst]^_`abcdefghijklmnopqrst]^_`abcdefghijklmnopqrstNone<=T uFThe function succeeds if the input is generated by the given generatorv3The function succeeds if the input is generated by genValidw3The function succeeds if the input is generated by  genUncheckedx3The function succeeds if the input is generated by  arbitraryyCThe function fails if the input is generated by the given generatorz0The 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.uvwxyz{|}~€‚ƒ„…†‡ˆuvwxyz{|}~€‚ƒ„…†‡ˆuvwx€‚yzƒ„{|}~…†‡ˆuvwxyz{|}~€‚ƒ„…†‡ˆNone<=TL=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆL=@?>ABDCEGFHuvwx€‚yzƒ„{|}~…†‡ˆ]^_`abcdefghijklmnopqrstIJKLMNOPQRSTUVWXYZ[\None<=T‰‰‰‰None<=TŠA Spec that specifies that  arbitrary# only generates data that satisfy isValid and that shrink" only produces data that satisfy isValid.Example usage: %arbitrarySpec (Proxy :: Proxy MyData)‹ arbitrary only generates valid dataŒshrink0, applied to valid data only produces valid dataŠ‹ŒŠ‹ŒŠ‹ŒŠ‹ŒNone<=T™’“”•–—˜™š›œžŸ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ‹Š‹Œ56789 :;<=@?>ABDCEGFHuvwx€‚yzƒ„{|}~…†‡ˆ]^_`abcdefghijklmnopqrstIJKLMNOPQRSTUVWXYZ[\  !"#$%&'()*+,1234-./0‰  !"#$%&'()*+,-./0123456789 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŠŽ­ŪŊ­Ū°­Ūą­Ūē­Ūģīĩķīĩ·īĩļīĩđīĩšīĩŧīĩžīĩ―īĩūŋ/genvalidity-hspec-0.2.0.5-GYzqsNERIwMA03Jej10X9 Test.ValidityTest.Validity.TypesTest.Validity.RelativeValidity$Test.Validity.Relations.Transitivity Test.Validity.Relations.Symmetry#Test.Validity.Relations.Reflexivity$Test.Validity.Relations.AntisymmetryTest.Validity.Ord!Test.Validity.Operations.Identity&Test.Validity.Operations.Commutativity&Test.Validity.Operations.AssociativityTest.Validity.GenValidity!Test.Validity.GenRelativeValidity Test.Validity.Functions.ValidityTest.Validity.Functions.Inverse#Test.Validity.Functions.Idempotence#Test.Validity.Functions.EquivalenceTest.Validity.Functions.CanFailTest.Validity.EqTest.Validity.ArbitraryTest.Validity.UtilsTest.Validity.RelationsTest.Validity.OperationsTest.Validity.Functionsbase Data.ProxyProxyCanFail hasFailedresultIfSucceeded$fCanFailEither$fCanFailMayberelativeValiditySpecrelativeValidityImpliesValidArelativeValidityImpliesValidBtransitiveOnElemstransitivityOnGenstransitivityOnValid transitivitytransitivityOnArbitrarysymmetricOnElemssymmetryOnGenssymmetryOnValidsymmetrysymmetryOnArbitraryreflexiveOnElemreflexivityOnGenreflexivityOnValid reflexivityreflexivityOnArbitrary antisymmetricOnElemsWithEqualityantisymmetryOnGensWithEqualityantisymmetryOnGensEqantisymmetryOnValid antisymmetryantisymmetryOnArbitraryordSpecleftIdentityOnElemWithEqualityleftIdentityOnGenWithEqualityleftIdentityOnGenleftIdentityOnValid leftIdentityrightIdentityOnElemWithEqualityrightIdentityOnGenWithEqualityrightIdentityOnGenrightIdentityOnValid rightIdentity identityOnGenidentityOnValididentitycommutativeOnGenscommutativeOnValids commutativecommutativeOnArbitraryassociativeOnGensassociativeOnValids associativeassociativeOnArbitrarygenValiditySpecgenValidityValidGeneratesValidgenGeneratesValid"genValidityInvalidGeneratesInvalidgenGeneratesInvalidgenRelativeValiditySpec&genRelativeValidityValidGeneratesValid*genRelativeValidityInvalidGeneratesInvalidproducesValidsOnGenproducesValidsOnArbitrary producesValidproducesValidsOnValidsproducesValidsOnGens2producesValidsOnValids2producesValidsOnArbitrary2producesValid2producesValidsOnGens3producesValid3producesValidsOnValids3producesValidsOnArbitrary3inverseFunctionsOnGeninverseFunctionsOnValidinverseFunctionsinverseFunctionsOnArbitrary$inverseFunctionsIfFirstSucceedsOnGen&inverseFunctionsIfFirstSucceedsOnValidinverseFunctionsIfFirstSucceeds*inverseFunctionsIfFirstSucceedsOnArbitrary%inverseFunctionsIfSecondSucceedsOnGen'inverseFunctionsIfSecondSucceedsOnValid inverseFunctionsIfSecondSucceeds+inverseFunctionsIfSecondSucceedsOnArbitraryinverseFunctionsIfSucceedOnGen inverseFunctionsIfSucceedOnValidinverseFunctionsIfSucceed$inverseFunctionsIfSucceedOnArbitraryidempotentOnGenidempotentOnValid idempotentidempotentOnArbitraryequivalentOnGenequivalentOnValid equivalentequivalentOnGens2equivalentOnValids2 equivalent2 equivalentWhenFirstSucceedsOnGen"equivalentWhenFirstSucceedsOnValidequivalentWhenFirstSucceeds"equivalentWhenFirstSucceedsOnGens2$equivalentWhenFirstSucceedsOnValids2equivalentWhenFirstSucceeds2!equivalentWhenSecondSucceedsOnGen#equivalentWhenSecondSucceedsOnValidequivalentWhenSecondSucceeds#equivalentWhenSecondSucceedsOnGens2%equivalentWhenSecondSucceedsOnValids2equivalentWhenSecondSucceeds2equivalentWhenSucceedOnGenequivalentWhenSucceedOnValidequivalentWhenSucceedequivalentWhenSucceedOnGens2equivalentWhenSucceedOnValids2equivalentWhenSucceed2 succeedsOnGensucceedsOnValidsucceedssucceedsOnArbitrary failsOnGenfailsOnInvalidvalidIfSucceedsOnGenvalidIfSucceedsOnValidvalidIfSucceedsOnArbitraryvalidIfSucceedssucceedsOnGens2succeedsOnValids2 succeeds2succeedsOnArbitrary2 failsOnGens2failsOnInvalid2validIfSucceedsOnGens2validIfSucceedsOnValids2validIfSucceeds2validIfSucceedsOnArbitrary2eqSpec arbitrarySpecarbitraryGeneratesOnlyValidshrinkProducesOnlyValids===><==>nameOfGHC.Baseidconst'validity-0.3.0.4-5fBtdKCGGOaCeyjylJUBnP Data.ValidityValidityisValid isInvalidconstructValidconstructValidUnsafe*genvalidity-0.2.0.4-9hzB1vUjj5qKeI4bRvObkxData.GenValidity genListOf arbPartition genSplit3genSplitupTo GenValidity genUncheckedgenValid genInvalid