This library implements some operations to generate search trees for various data types.
The library also provides combinators to support the easy definition of search tree generators for user-defined data types. If a data type is defined by
data T a1 ... an = ... | C t1 ... tn | ....
then one can define a search tree generator for this type by
genT gena1 ... genan = ... ||| genCons<n> C gen_t1 ... gen_t1 ||| ...
            where gen_ti
            denotes the search tree generator for type ti.
For instance, a search tree generator for the type
          
data Tree a = Leaf a
            | Node [Tree a]
          can be defined by
genTree gena =  genCons1 Leaf gena
            ||| genCons1 Node (genList (genTree gena))
          Author: Michael Hanus
Version: December 2018
| (|||)
                  ::  SearchTree a -> SearchTree a -> SearchTree aConstructs an alternative of two search trees. | 
| genCons0
                  ::  a -> SearchTree aConstructs a generator for a nullary constructor. | 
| genCons1
                  ::  (a -> b) -> SearchTree a -> SearchTree bConstructs a generator for a unary constructor where the generator for the argument type is provided. | 
| genCons2
                  ::  (a -> b -> c) -> SearchTree a -> SearchTree b -> SearchTree cConstructs a generator for a binary constructor where the generators for the argument types are provided. | 
| genCons3
                  ::  (a -> b -> c -> d) -> SearchTree a -> SearchTree b -> SearchTree c -> SearchTree dConstructs a generator for a ternary constructor where the generators for the argument types are provided. | 
| genCons4
                  ::  (a -> b -> c -> d -> e) -> SearchTree a -> SearchTree b -> SearchTree c -> SearchTree d -> SearchTree eConstructs a generator for a constructor of arity 4 where the generators for the argument types are provided. | 
| genCons5
                  ::  (a -> b -> c -> d -> e -> f) -> SearchTree a -> SearchTree b -> SearchTree c -> SearchTree d -> SearchTree e -> SearchTree fConstructs a generator for a constructor of arity 5 where the generators for the argument types are provided. | 
| genNat
                  ::  SearchTree IntGenerates a search tree for positive natural numbers: | 
| genInt
                  ::  SearchTree IntGenerates a search tree for integer values. | 
| genFloat
                  ::  SearchTree FloatGenerates a search tree for Float values. | 
| genBool
                  ::  SearchTree BoolGenerates a search tree for Boolean values. | 
| genChar
                  ::  SearchTree CharGenerates a search tree for character values. | 
| genList
                  ::  SearchTree a -> SearchTree [a]Generates a search tree for list values where the search tree for the elements is given as a parameter. | 
| genMaybe
                  ::  SearchTree a -> SearchTree (Maybe a)Generates a search tree for Maybevalues where the search tree for
the possible element is given as a parameter. | 
| genEither
                  ::  SearchTree a -> SearchTree b -> SearchTree (Either a b)Generates a search tree for Eithervalues where the search tree for
the possible elements is given as a parameter. | 
| genUnit
                  ::  SearchTree ()Generates a search tree for the unit values. | 
| genPair
                  ::  SearchTree a -> SearchTree b -> SearchTree (a,b)Generates a search tree for pair of values where the search tree generators for the components types are given as parameters. | 
| genTriple
                  ::  SearchTree a -> SearchTree b -> SearchTree c -> SearchTree (a,b,c)Generates a search tree for triple of values where the search tree generators for the components types are given as parameters. | 
| genTuple4
                  ::  SearchTree a -> SearchTree b -> SearchTree c -> SearchTree d -> SearchTree (a,b,c,d)Generates a search tree for quadruple of values where the search tree generators for the components types are given as parameters. | 
| genTuple5
                  ::  SearchTree a -> SearchTree b -> SearchTree c -> SearchTree d -> SearchTree e -> SearchTree (a,b,c,d,e)Generates a search tree for 5-tuple of values where the search tree generators for the components types are given as parameters. | 
| genOrdering
                  ::  SearchTree OrderingGenerates a search tree for the Orderingvalues. | 
| 
                       Constructs an alternative of two search trees. 
 | 
| 
                       Constructs a generator for a nullary constructor. 
 | 
| 
                       Constructs a generator for a unary constructor where the generator for the argument type is provided. | 
| 
                       Constructs a generator for a binary constructor where the generators for the argument types are provided. | 
| 
                       Constructs a generator for a ternary constructor where the generators for the argument types are provided. | 
| 
                       Constructs a generator for a constructor of arity 4 where the generators for the argument types are provided. | 
| 
                       Constructs a generator for a constructor of arity 5 where the generators for the argument types are provided. | 
| 
                       Generates a search tree for positive natural numbers: | 
| 
                       Generates a search tree for integer values. | 
| 
                       Generates a search tree for Float values. | 
| 
                       Generates a search tree for Boolean values. 
 | 
| 
                       Generates a search tree for character values. In order to obtain readable values, we only generate letters and digits. | 
| 
                       Generates a search tree for list values where the search tree for the elements is given as a parameter. | 
| 
                       
                      Generates a search tree for  | 
| 
                       
                      Generates a search tree for  | 
| 
                       Generates a search tree for the unit values. 
 | 
| 
                       Generates a search tree for pair of values where the search tree generators for the components types are given as parameters. | 
| 
                       Generates a search tree for triple of values where the search tree generators for the components types are given as parameters. | 
| 
                       Generates a search tree for quadruple of values where the search tree generators for the components types are given as parameters. | 
| 
                       Generates a search tree for 5-tuple of values where the search tree generators for the components types are given as parameters. | 
| 
                       
                      Generates a search tree for the  
 |