This module defines some types used by the EasyCheck libraries.
Author: Michael Hanus
Version: January 2019
Abstract type to represent properties involving IO actions.
Constructors:
PropIO
                    ::  (Bool -> String -> IO (Maybe String)) -> PropIO
              Abstract type to represent standard properties to be checked. Basically, it contains all tests to be executed to check the property.
Constructors:
Prop
                    ::  [Test] -> Prop
              Abstract type to represent a single test for a property to be checked. A test consists of the result computed for this test, the arguments used for this test, and the labels possibly assigned to this test by annotating properties.
Constructors:
Test
                    ::  Result ->  [String] ->  [String] -> Test
              Data type to represent the result of checking a property.
Constructors:
Undef
                    :: Result
              Ok
                    :: Result
              Falsified
                    ::  [String] -> Result
              Ambigious
                    ::  [Bool] ->  [String] -> Result