!"#$%&'()*+ , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe+<=DTf Safe<=T ?A class of types that are the result of functions that can fail     None<=TfA 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: ,relativeValiditySpec @MyDataFor @MyOtherDataisValidFor a b implies  isValid a for all bisValidFor a b implies  isValid b for all aSafe<=Tx Transitive(\prec) \quad\equiv\quad \forall a, b, c: ((a \prec b) \wedge (b \prec c)) \Rightarrow (a \prec c) !transitivityOnValid ((>) @Double)"transitivityOnValid ((>=) @Double)"transitivityOnValid ((==) @Double)"transitivityOnValid ((<=) @Double)!transitivityOnValid ((<) @Double)2transitivityOnValid (Data.List.isPrefixOf @Double)2transitivityOnValid (Data.List.isSuffixOf @Double)1transitivityOnValid (Data.List.isInfixOf @Double)7transitivityOnValid (Data.List.isSubsequenceOf @Double)transitivity ((>) @Int)transitivity ((>=) @Int)transitivity ((==) @Int)transitivity ((<=) @Int)transitivity ((<) @Int)(transitivity (Data.List.isPrefixOf @Int)(transitivity (Data.List.isSuffixOf @Int)'transitivity (Data.List.isInfixOf @Int)-transitivity (Data.List.isSubsequenceOf @Int)"transitivityOnArbitrary ((>) @Int)#transitivityOnArbitrary ((>=) @Int)#transitivityOnArbitrary ((==) @Int)#transitivityOnArbitrary ((<=) @Int)"transitivityOnArbitrary ((<) @Int)3transitivityOnArbitrary (Data.List.isPrefixOf @Int)3transitivityOnArbitrary (Data.List.isSuffixOf @Int)2transitivityOnArbitrary (Data.List.isInfixOf @Int)8transitivityOnArbitrary (Data.List.isSubsequenceOf @Int) A relationThree elementsSafe<=Tc Symmetric(\prec) \quad\equiv\quad \forall a, b: (a \prec b) \Leftrightarrow (b \prec a) symmetryOnValid ((==) @Double)symmetryOnValid ((/=) @Double)symmetry ((==) @Int)symmetry ((/=) @Int)symmetryOnArbitrary ((==) @Int)symmetryOnArbitrary ((/=) @Int) A relation Two elementsSafe<=TD Reflexive(\prec) \quad\equiv\quad \forall a: (a \prec a) !reflexivityOnValid ((<=) @Double)!reflexivityOnValid ((==) @Double)!reflexivityOnValid ((>=) @Double)1reflexivityOnValid (Data.List.isPrefixOf @Double)1reflexivityOnValid (Data.List.isSuffixOf @Double)0reflexivityOnValid (Data.List.isInfixOf @Double)6reflexivityOnValid (Data.List.isSubsequenceOf @Double)reflexivity ((<=) @Int)reflexivity ((==) @Int)reflexivity ((>=) @Int)'reflexivity (Data.List.isPrefixOf @Int)'reflexivity (Data.List.isSuffixOf @Int)&reflexivity (Data.List.isInfixOf @Int),reflexivity (Data.List.isSubsequenceOf @Int)"reflexivityOnArbitrary ((<=) @Int)"reflexivityOnArbitrary ((==) @Int)"reflexivityOnArbitrary ((>=) @Int)2reflexivityOnArbitrary (Data.List.isPrefixOf @Int)2reflexivityOnArbitrary (Data.List.isSuffixOf @Int)1reflexivityOnArbitrary (Data.List.isInfixOf @Int)7reflexivityOnArbitrary (Data.List.isSubsequenceOf @Int) 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) #!antisymmetryOnValid ((>) @Double)"antisymmetryOnValid ((>=) @Double)"antisymmetryOnValid ((<=) @Double)!antisymmetryOnValid ((<) @Double)2antisymmetryOnValid (Data.List.isPrefixOf @Double)2antisymmetryOnValid (Data.List.isSuffixOf @Double)1antisymmetryOnValid (Data.List.isInfixOf @Double)7antisymmetryOnValid (Data.List.isSubsequenceOf @Double)$antisymmetry ((>) @Int)antisymmetry ((>=) @Int)antisymmetry ((<=) @Int)antisymmetry ((<) @Int)(antisymmetry (Data.List.isPrefixOf @Int)(antisymmetry (Data.List.isSuffixOf @Int)'antisymmetry (Data.List.isInfixOf @Int)-antisymmetry (Data.List.isSubsequenceOf @Int)>antisymmetry ((\x y -> even x && odd y) :: Int -> Int -> Bool)%"antisymmetryOnArbitrary ((>) @Int)#antisymmetryOnArbitrary ((>=) @Int)#antisymmetryOnArbitrary ((<=) @Int)"antisymmetryOnArbitrary ((<) @Int)3antisymmetryOnArbitrary (Data.List.isPrefixOf @Int)3antisymmetryOnArbitrary (Data.List.isSuffixOf @Int)2antisymmetryOnArbitrary (Data.List.isInfixOf @Int)8antisymmetryOnArbitrary (Data.List.isSubsequenceOf @Int)IantisymmetryOnArbitrary ((\x y -> even x && odd y) :: Int -> Int -> Bool)  A relationAn equivalence relation Two elements!"#$% !"#$% !"#$% !"#$%Safe<=T&M Antireflexive(\prec) \quad\equiv\quad \forall a: \neg (a \prec a) ($antireflexivityOnValid ((<) @Double)%antireflexivityOnValid ((/=) @Double)$antireflexivityOnValid ((>) @Double))antireflexivity ((<) @Int)antireflexivity ((/=) @Int)antireflexivity ((>) @Int)*%antireflexivityOnArbitrary ((<) @Int)&antireflexivityOnArbitrary ((/=) @Int)%antireflexivityOnArbitrary ((>) @Int)& A relation An element'()*&'()*&'()*&'()*Safe<=T !"#$%&'()* !"#$%&'()* Safe<=T +[ LeftIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (b \star a) \doteq a ./leftIdentityOnValid (flip ((^) @Double @Int)) 1/%leftIdentity (flip ((^) @Int @Int)) 100leftIdentityOnArbitrary (flip ((^) @Int @Int)) 11\ RightIdentity(\star, \doteq, b) \quad\equiv\quad \forall a: (a \star b) \doteq a 4$rightIdentityOnValid ((^) @Double) 15rightIdentity ((^) @Int) 16%rightIdentityOnArbitrary ((^) @Int) 18identityOnValid ((*) @Double) 1identityOnValid ((+) @Double) 09identity ((*) @Int) 1identity ((+) @Int) 0: identityOnArbitrary ((*) @Int) 1 identityOnArbitrary ((+) @Int) 0+A binary operation An equalityA candidate left-identity An element,A binary operation An equalityA candidate left-identity-A binary operationA candidate left-identity./01A binary operation An equalityA candidate right-identity An element2A binary operation An equalityA candidate right-identity3A binary operationA candidate right-identity456789:+,-./0123456789:+,-./0123456789:+,-./0123456789: None<=T<commutative ((+) @Double)commutative ((*) @Double)=commutative ((+) @Int)commutative ((*) @Int)>!commutativeOnArbitrary ((+) @Int)!commutativeOnArbitrary ((*) @Int);<=>;<=>;<=>;<=> None<=TAassociative ((*) @Int)associative ((+) @Int)B!associativeOnArbitrary ((*) @Int)!associativeOnArbitrary ((+) @Int)?@AB?@AB?@AB?@ABNone<=T+,-./0123456789:;<=>?@AB+,-./0123456789:?@AB;<=> None<=TfCA spec for properties of  and  instances.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 @IntDA Spec that specifies that genValid only generates valid data.Example usage: genValidSpec @IntEA Spec that specifies that  genInvalid only generates invalid data.Example usage: genInvalidSpec @DoubleFgenValid only generates valid datagenValidGeneratesValid @()genValidGeneratesValid @Bool genValidGeneratesValid @OrderinggenValidGeneratesValid @ChargenValidGeneratesValid @IntgenValidGeneratesValid @FloatgenValidGeneratesValid @DoublegenValidGeneratesValid @Integer#genValidGeneratesValid @(Maybe Int)genValidGeneratesValid @[Int]G4The given generator generates only valid data pointsHgenValid only generates invalid data!genInvalidGeneratesInvalid @Float"genInvalidGeneratesInvalid @Double*genInvalidGeneratesInvalid @(Maybe Double)$genInvalidGeneratesInvalid @[Double]I6The given generator generates only invalid data pointsCDEFGHICDEFGHICDEFGHICDEFGHI None<=TfJA 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: /relativeGenValiditySpec @MyDataFor @MyOtherDataM genValidFor b$ only generates values that satisfy  isValidFor bNgenInvalidFor b+ only generates values that do not satisfy  isValidFor bJKLMNJKLMNJKLMNJKLMNNone<=TOdThe function produces valid output when the input is generated as specified by the given generator.PCThe function produces valid output when the input is generated by genValidQCThe function produces valid output when the input is generated by  genUncheckedRCThe function produces valid output when the input is generated by  arbitrary OPQRSTUVWXYZ OPQRSTUVWXYZ OPQRSTUVWXYZ OPQRSTUVWXYZNone<=T^e is its own inverse function for every type: prop> inverseFunctionsOnArbitrary id (id :: Int -> Int)[\]^_`abcdefghij[\]^_`abcdefghij[\]^_`abcdefghij[\]^_`abcdefghijNone<=Tn 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)klmnklmnklmnklmnNone<=TrCequivalentOnArbitrary ((* 2) . (+ 1)) ((+ 2) . (* 2) :: Int -> Int)v5equivalentOnArbitrary2 (+) ((+) :: Int -> Int -> Int)$opqrstuvwxyz{|}~$opqrstuvwxyz{|}~$opqrstuvwxzy{|~}$opqrstuvwxyz{|}~None<=T FThe function succeeds if the input is generated by the given generator3The function succeeds if the input is generated by genValid3The function succeeds if the input is generated by  genUnchecked3The function succeeds if the input is generated by  arbitraryCThe function fails if the input is generated by the given generator0The 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<=TXOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~XOPQRSTUVWXYZopqrstuvwxzy{|~}[\]^_`abcdefghijklmnNone<=DTfcStandard test spec for properties of Functor instances for values generated with GenValid instancesExample usage: functorSpecOnArbitrary @[]gStandard test spec for properties of Functor instances for values generated with GenUnchecked instancesExample usage: functorSpecOnArbitrary @[]dStandard test spec for properties of Functor instances for values generated with Arbitrary instancesExample usage: functorSpecOnArbitrary @[]Standard test spec for properties of Functor instances for values generated by given generators (and names for those generator).Example usage: functorSpecOnGens @[] @Int (pure 4) "four" (genListOf $ pure 5) "list of fives" ((+) <$> genValid) "additions" ((*) <$> genValid) "multiplications"None<=DTfaStandard test spec for properties of Monad instances for values generated with GenValid instancesExample usage: monadSpecOnArbitrary @[]eStandard test spec for properties of Monad instances for values generated with GenUnchecked instancesExample usage: monadSpecOnArbitrary @[]bStandard test spec for properties of Monad instances for values generated with Arbitrary instancesExample usage: monadSpecOnArbitrary @[]~Standard test spec for properties of Monad instances for values generated by given generators (and names for those generator).Example usage: JmonadSpecOnGens @[] @Int (pure 4) "four" (genListOf $ pure 5) "list of fives" (genListOf $ pure 6) "list of sixes" ((*) <$> genValid) "factorisations" (pure $ \a -> [a]) "singletonisation" (pure $ \a -> [a]) "singletonisation" (pure $ pure (+ 1)) "increment in list"None<=Tf%Standard test spec for properties of  instances for valid valuesExample usage: monoidSpecOnValid @[Double]%Standard test spec for properties of  instances for unchecked valuesExample usage: monoidSpec @[Int]%Standard test spec for properties of  instances for arbitrary valuesExample usage: monoidSpecOnArbitrary @[Int]~Standard test spec for properties of Monoid instances for values generated by a given generator (and name for that generator).Example usage: 2monoidSpecOnGen (pure "a") "singleton list of 'a'"None<=TfCStandard test spec for properties of Ord instances for valid valuesExample usage: ordSpecOnValid @DoubleGStandard test spec for properties of Ord instances for unchecked valuesExample usage:  ordSpec @IntGStandard test spec for properties of Ord instances for arbitrary valuesExample usage: ordSpecOnArbitrary @Int{Standard test spec for properties of Ord instances for values generated by a given generator (and name for that generator).Example usage: -ordSpecOnGen ((* 2) <$> genValid @Int) "even"None<=TfBStandard test spec for properties of Eq instances for valid valuesExample usage: eqSpecOnValid @DoubleFStandard test spec for properties of Eq instances for unchecked valuesExample usage:  eqSpec @IntFStandard test spec for properties of Eq instances for arbitrary valuesExample usage: eqSpecOnArbitrary @IntzStandard test spec for properties of Eq instances for values generated by a given generator (and name for that generator).Example usage: ,eqSpecOnGen ((* 2) <$> genValid @Int) "even"None<=TfA Spec that specifies that  arbitrary# only generates data that satisfy isValidExample usage: arbitrarySpec @Int arbitrary only generates valid data arbitraryGeneratesOnlyValid @IntNone<=DTfgStandard test spec for properties of Applicative instances for values generated with GenValid instancesExample usage: applicativeSpecOnArbitrary @[]kStandard test spec for properties of Applicative instances for values generated with GenUnchecked instancesExample usage: applicativeSpecOnArbitrary @[]hStandard test spec for properties of Applicative instances for values generated with Arbitrary instancesExample usage: applicativeSpecOnArbitrary @[]Standard test spec for properties of Applicative instances for values generated by given generators (and names for those generator).WUnless you are building a specific regression test, you probably want to use the other  functions.Example usage: >applicativeSpecOnGens @Maybe @String (pure "ABC") "ABC" (Just <$> pure "ABC") "Just an ABC" (pure Nothing) "purely Nothing" ((++) <$> genValid) "prepends" (pure <$> ((++) <$> genValid)) "prepends in a Just" (pure <$> (flip (++) <$> genValid)) "appends in a Just"  None<=T  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CDEFGHIJMNOPQRSTUVWXYZ opqrstuvwxzy{|~}[\]^_`abcdefghijklmn !"#$%&'()*+,-./0123456789:?@AB;<=> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j klmnopqrstuvwxyz{|}~   0genvalidity-hspec-0.3.0.0-8TGha7ZWc4P3MYZrpAprkNTest.Validity.UtilsTest.Validity.TypesTest.Validity.RelativeValidity$Test.Validity.Relations.Transitivity Test.Validity.Relations.Symmetry#Test.Validity.Relations.Reflexivity$Test.Validity.Relations.Antisymmetry'Test.Validity.Relations.Antireflexivity!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.FunctorTest.Validity.MonadTest.Validity.MonoidTest.Validity.OrdTest.Validity.EqTest.Validity.ArbitraryTest.Validity.ApplicativeTest.Validity.RelationsTest.Validity.OperationsTest.Validity.Functions Test.ValidityAnon===><==>nameOfgenDescr binRelStr $fFunctorAnon $fShowAnonCanFail hasFailedresultIfSucceeded$fCanFailEither$fCanFailMayberelativeValiditySpecrelativeValidityImpliesValidArelativeValidityImpliesValidBtransitiveOnElemstransitivityOnGenstransitivityOnValid transitivitytransitivityOnArbitrarysymmetricOnElemssymmetryOnGenssymmetryOnValidsymmetrysymmetryOnArbitraryreflexiveOnElemreflexivityOnGenreflexivityOnValid reflexivityreflexivityOnArbitrary antisymmetricOnElemsWithEqualityantisymmetryOnGensWithEqualityantisymmetryOnGensantisymmetryOnValid antisymmetryantisymmetryOnArbitraryantireflexiveOnElemantireflexivityOnGenantireflexivityOnValidantireflexivityantireflexivityOnArbitraryleftIdentityOnElemWithEqualityleftIdentityOnGenWithEqualityleftIdentityOnGenleftIdentityOnValid leftIdentityleftIdentityOnArbitraryrightIdentityOnElemWithEqualityrightIdentityOnGenWithEqualityrightIdentityOnGenrightIdentityOnValid rightIdentityrightIdentityOnArbitrary identityOnGenidentityOnValididentityidentityOnArbitrarycommutativeOnGenscommutativeOnValids commutativecommutativeOnArbitraryassociativeOnGensassociativeOnValids associativeassociativeOnArbitrarygenValiditySpec genValidSpecgenInvalidSpecgenValidGeneratesValidgenGeneratesValidgenInvalidGeneratesInvalidgenGeneratesInvalidgenRelativeValiditySpecgenRelativeValidSpecgenRelativeInvalidSpecgenRelativeValidGeneratesValid"genRelativeInvalidGeneratesInvalidproducesValidsOnGenproducesValidsOnValids producesValidproducesValidsOnArbitraryproducesValidsOnGens2producesValidsOnValids2producesValid2producesValidsOnArbitrary2producesValidsOnGens3producesValidsOnValids3producesValid3producesValidsOnArbitrary3inverseFunctionsOnGeninverseFunctionsOnValidinverseFunctionsinverseFunctionsOnArbitrary$inverseFunctionsIfFirstSucceedsOnGen&inverseFunctionsIfFirstSucceedsOnValidinverseFunctionsIfFirstSucceeds*inverseFunctionsIfFirstSucceedsOnArbitrary%inverseFunctionsIfSecondSucceedsOnGen'inverseFunctionsIfSecondSucceedsOnValid inverseFunctionsIfSecondSucceeds+inverseFunctionsIfSecondSucceedsOnArbitraryinverseFunctionsIfSucceedOnGen inverseFunctionsIfSucceedOnValidinverseFunctionsIfSucceed$inverseFunctionsIfSucceedOnArbitraryidempotentOnGenidempotentOnValid idempotentidempotentOnArbitraryequivalentOnGenequivalentOnValid equivalentequivalentOnArbitraryequivalentOnGens2equivalentOnValids2 equivalent2equivalentOnArbitrary2 equivalentWhenFirstSucceedsOnGen"equivalentWhenFirstSucceedsOnValid&equivalentWhenFirstSucceedsOnArbitraryequivalentWhenFirstSucceeds"equivalentWhenFirstSucceedsOnGens2$equivalentWhenFirstSucceedsOnValids2'equivalentWhenFirstSucceedsOnArbitrary2equivalentWhenFirstSucceeds2!equivalentWhenSecondSucceedsOnGen#equivalentWhenSecondSucceedsOnValid'equivalentWhenSecondSucceedsOnArbitraryequivalentWhenSecondSucceeds#equivalentWhenSecondSucceedsOnGens2%equivalentWhenSecondSucceedsOnValids2(equivalentWhenSecondSucceedsOnArbitrary2equivalentWhenSecondSucceeds2equivalentWhenSucceedOnGenequivalentWhenSucceedOnValidequivalentWhenSucceed equivalentWhenSucceedOnArbitraryequivalentWhenSucceedOnGens2equivalentWhenSucceedOnValids2!equivalentWhenSucceedOnArbitrary2equivalentWhenSucceed2equivalentOnGens3equivalentOnValids3 equivalent3equivalentOnArbitrary3 succeedsOnGensucceedsOnValidsucceedssucceedsOnArbitrary failsOnGenfailsOnInvalidvalidIfSucceedsOnGenvalidIfSucceedsOnValidvalidIfSucceedsOnArbitraryvalidIfSucceedssucceedsOnGens2succeedsOnValids2 succeeds2succeedsOnArbitrary2 failsOnGens2failsOnInvalid2validIfSucceedsOnGens2validIfSucceedsOnValids2validIfSucceeds2validIfSucceedsOnArbitrary2functorSpecOnValid functorSpecfunctorSpecOnArbitraryfunctorSpecOnGensmonadSpecOnValid monadSpecmonadSpecOnArbitrarymonadSpecOnGensmonoidSpecOnValid monoidSpecmonoidSpecOnArbitrarymonoidSpecOnGenordSpecOnValidordSpecordSpecOnArbitrary ordSpecOnGen eqSpecOnValideqSpeceqSpecOnArbitrary eqSpecOnGen arbitrarySpecarbitraryGeneratesOnlyValidapplicativeSpecOnValidapplicativeSpecapplicativeSpecOnArbitraryapplicativeSpecOnGens*genvalidity-0.3.0.0-5M0fZ7uDXdp9b8g9XrL1xwData.GenValidityGenValid GenInvalidbaseGHC.Baseidconst fmapTypeStr flTypeStrfunctorSpecWithInts returnTypeStr bindTypeStrmonadSpecWithIntsMonoid memptyTypeStrmappendTypeStrmconcatTypeStr leTypeStr geTypeStr ltTypeStr gtTypeStr eqTypeStr neqTypeStr pureTypeStr seqTypeStr seqrTypeStr seqlTypeStrapplicativeSpecWithInts'validity-0.3.1.1-EWACAvf6XAwKUXbMhUrHNb Data.ValidityValidityisValidconstructValidconstructValidUnsafe isInvalid genListOf arbPartition genSplit3genSplitupTo GenUnchecked genUncheckedgenValid genInvalid