The fundamental definitions for GenCheck.
Throughout GenCheck, structured types are indexed with a (Rank,Count) pair.
These types are used everywhere so are in Base.
\begin{code}
module Test.GenCheck.Base.Base
( Rank
, Count
, Property
) where
type Rank = Int
type Count = Integer
\end{code}
The property type is a function from the test domain to a Boolean, i.e. a
univariate proposition. If the specification property has multiple arguments,
it must first be uncurried to make the test domain the product of the
arguments.
\begin{code}
type Property a = a -> Bool
\end{code}