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}