#      Trustworthy wraps  in . This may look like a dirty hack, but this building block allows us to implement most of QuickCheck's functionality without resorting to IO again. invokes  via '. It is useful in connection with the  family of functions.SafeImplication. Cf. .Equality test. Cf. .Conjunction. Cf. .Disjunction. Cf. . "Nondeterministic conjunction. Cf.  . Label tests. Cf.  . Shrink counterexamples. Cf.  . +Suppress shrinking of counterexamples. Cf.  . .Universal quantification with shrinking. Cf.  .Universal quantification. Cf. .Adjust testcase sizes. Cf. .Cf. P. Note that in contrast to QuickCheck's function, this one takes an additional  argument.Cf. P. Note that in contrast to QuickCheck's function, this one takes an additional  argument.Cf. P. Note that in contrast to QuickCheck's function, this one takes an additional  argument.Cf. P. Note that in contrast to QuickCheck's function, this one takes an additional  argument.DputStr $ quickCheck (inventQCGen ()) (\x -> length (x :: [()]) < 10)7*** Failed! Falsifiable (after 18 tests and 3 shrinks):.[(),(),(),(),(),(),(),(),(),(),(),(),(),(),()]! !"#$% &' ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !"#$% &'      !"#$%&'()*+,-./012324252627289:9;9<9=9>9?9?9@9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9U9VWXWYWZW[W\W]W^W^_`_a_b_c_d_e_f_g_h_ijkjkjljmjmjnjojpjqjrjsjtjujujvjwjwjxjyjyjzj{j{j|j}j}j~jjjjjjjjjjjjjjjjjjj.QuickCheck-safe-0.1.0.3-GLqkkya9isSCekfqXxRx0JTest.QuickCheck.Safe.TrustedTest.QuickCheck.Safe quickCheckTest.QuickCheck==>===.&&..||.&.label shrinking noShrinking forAllShrinkforAllmapSizequickCheckWithResultquickCheckResultquickCheckWith*QuickCheck-2.10.0.1-ALuGysu7txTB2VnkPyDuTqTest.QuickCheck.Exception AnExceptionTest.QuickCheck.RandomQCGen pureEvaluate inventQCGen STestable.&.$fSTestable(->)$fSTestableBool$fSTestableGen$fSTestableSProperty tryEvaluatebase GHC.IO.UnsafeunsafePerformIOnewQCGenSResultSOkSDiscardSFailsLabels sExceptionsSmaller SProperty MkSProperty unSProperty sProperty labelSResultmapSResultLabelsTest.QuickCheck.AllverboseCheckAll quickCheckAllforAllProperties monomorphicpolyVerboseCheckpolyQuickCheckTest.QuickCheck.TestverboseCheckWithResultverboseCheckResultverboseCheckWith verboseCheckstdArgsArgsreplay maxSuccessmaxDiscardRatiomaxSizechatty maxShrinksResultSuccessGaveUpFailureNoExpectedFailureInsufficientCoveragelabelsreason theExceptionnumTestsoutput numShrinksnumShrinkTriesnumShrinkFinalusedSeedusedSizefailingTestCaseTest.QuickCheck.PropertytotalwithMaxSuccessagain whenFail'whenFail ioPropertyDiscardTest.QuickCheck.Function applyFun3 applyFun2applyFun functionMapFnFn2Fn3FunctionfunctionFunTest.QuickCheck.ModifiersBlindgetBlindFixedgetFixed OrderedListOrdered getOrdered NonEmptyListNonEmpty getNonEmptyPositive getPositiveNonZero getNonZero NonNegativegetNonNegativeLargegetLargeSmallgetSmallShrink2 getShrink2Smart Shrinking ShrinkState shrinkInit shrinkState ASCIIStringgetASCIIString UnicodeStringgetUnicodeStringPrintableStringgetPrintableStringTest.QuickCheck.Arbitrary infiniteList orderedListvectorcoarbitraryEnumcoarbitraryShowcoarbitraryRealcoarbitraryIntegral><genericCoarbitraryshrinkRealFracshrinkIntegral shrinkMapBy shrinkMap shrinkNothingarbitraryPrintableChararbitraryASCIIChararbitraryUnicodeChararbitrarySizedBoundedIntegralarbitraryBoundedEnumarbitraryBoundedRandomarbitraryBoundedIntegralarbitrarySizedFractionalarbitrarySizedNaturalarbitrarySizedIntegral shrinkListsubtermsrecursivelyShrink genericShrinkshrink2 arbitrary2shrink1 arbitrary1 Arbitrary arbitraryshrink Arbitrary1 liftArbitrary liftShrink Arbitrary2liftArbitrary2 liftShrink2 CoArbitrary coarbitrarydiscardTest.QuickCheck.GeninfiniteListOfvectorOflistOf1listOfgrowingElementsshuffle sublistOfelements frequencyoneof suchThatMaybe suchThatMapsuchThatsamplesample'generatechoosescaleresizegetSizesizedvariantGen