-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A library for demand-driven testing of Haskell programs
--   
--   Lazy SmallCheck is a library for exhaustive, demand-driven testing of
--   Haskell programs. It is based on the idea that if a property holds for
--   a partially-defined input then it must also hold for all fully-defined
--   refinements of the that input. Compared to `<a>eager'</a> input
--   generation as in SmallCheck, Lazy SmallCheck may require significantly
--   fewer test-cases to verify a property for all inputs up to a given
--   depth.
@package lazysmallcheck
@version 0.6


-- | For documentation, see the paper "SmallCheck and Lazy SmallCheck:
--   automatic exhaustive testing for small values" available at
--   <a>http://www.cs.york.ac.uk/fp/smallcheck/</a>. Several examples are
--   also included in the package.
module Test.LazySmallCheck
class Serial a
series :: Serial a => Series a
type Series a = Int -> Cons a
data Cons a
cons :: a -> Series a
(><) :: Series (a -> b) -> Series a -> Series b
infixl 4 ><
empty :: Series a
(\/) :: Series a -> Series a -> Series a
infixr 3 \/
drawnFrom :: [a] -> Cons a
cons0 :: a -> Series a
cons1 :: Serial a => (a -> b) -> Series b
cons2 :: (Serial a, Serial b) => (a -> b -> c) -> Series c
cons3 :: (Serial a, Serial b, Serial c) => (a -> b -> c -> d) -> Series d
cons4 :: (Serial a, Serial b, Serial c, Serial d) => (a -> b -> c -> d -> e) -> Series e
cons5 :: (Serial a, Serial b, Serial c, Serial d, Serial e) => (a -> b -> c -> d -> e -> f) -> Series f
class Testable a
depthCheck :: Testable a => Int -> a -> IO ()
smallCheck :: Testable a => Int -> a -> IO ()
test :: Testable a => a -> IO ()
(==>) :: Bool -> Bool -> Bool
infixr 0 ==>
data Property
lift :: Bool -> Property
neg :: Property -> Property
(*&*) :: Property -> Property -> Property
infixl 4 *&*
(*|*) :: Property -> Property -> Property
infixr 3 *|*
(*=>*) :: Property -> Property -> Property
infixr 0 *=>*
(*=*) :: Property -> Property -> Property
instance Test.LazySmallCheck.Serial ()
instance Test.LazySmallCheck.Serial GHC.Types.Bool
instance Test.LazySmallCheck.Serial a => Test.LazySmallCheck.Serial (GHC.Base.Maybe a)
instance (Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Serial b) => Test.LazySmallCheck.Serial (Data.Either.Either a b)
instance Test.LazySmallCheck.Serial a => Test.LazySmallCheck.Serial [a]
instance (Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Serial b) => Test.LazySmallCheck.Serial (a, b)
instance (Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Serial b, Test.LazySmallCheck.Serial c) => Test.LazySmallCheck.Serial (a, b, c)
instance (Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Serial b, Test.LazySmallCheck.Serial c, Test.LazySmallCheck.Serial d) => Test.LazySmallCheck.Serial (a, b, c, d)
instance (Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Serial b, Test.LazySmallCheck.Serial c, Test.LazySmallCheck.Serial d, Test.LazySmallCheck.Serial e) => Test.LazySmallCheck.Serial (a, b, c, d, e)
instance Test.LazySmallCheck.Serial GHC.Types.Int
instance Test.LazySmallCheck.Serial GHC.Integer.Type.Integer
instance Test.LazySmallCheck.Serial GHC.Types.Char
instance Test.LazySmallCheck.Serial GHC.Types.Float
instance Test.LazySmallCheck.Serial GHC.Types.Double
instance Test.LazySmallCheck.Testable GHC.Types.Bool
instance Test.LazySmallCheck.Testable Test.LazySmallCheck.Property
instance (GHC.Show.Show a, Test.LazySmallCheck.Serial a, Test.LazySmallCheck.Testable b) => Test.LazySmallCheck.Testable (a -> b)
