mem :: Int -> Tree -> Bool
-- testing 360 combinations of argument values
-- pruning with 20/30 rules
-- 1 candidates of size 1
-- 0 candidates of size 2
-- 0 candidates of size 3
-- 0 candidates of size 4
-- 0 candidates of size 5
-- 0 candidates of size 6
-- 0 candidates of size 7
-- 24 candidates of size 8
-- 48 candidates of size 9
-- 0 candidates of size 10
-- 180 candidates of size 11
-- 80 candidates of size 12
-- tested 274 candidates
mem x Leaf  =  False
mem x (Node t1 y t2)  =  mem x t1 || (x == y || mem x t2)

mem :: Int -> Tree -> Bool
-- testing 360 combinations of argument values
-- pruning with 1/2 rules
-- 2 candidates of size 1
-- 0 candidates of size 2
-- 0 candidates of size 3
-- 0 candidates of size 4
-- 0 candidates of size 5
-- 0 candidates of size 6
-- 6 candidates of size 7
-- 0 candidates of size 8
-- 0 candidates of size 9
-- 32 candidates of size 10
-- 0 candidates of size 11
-- 160 candidates of size 12
-- tested 106 candidates
mem x Leaf  =  False
mem x (Node t1 y t2)  =  case x `compare` y of
                         LT -> mem x t1
                         EQ -> True
                         GT -> mem x t2

insert :: Int -> Tree -> Tree
-- testing 360 combinations of argument values
-- pruning with 2/3 rules
-- 2 candidates of size 1
-- 0 candidates of size 2
-- 0 candidates of size 3
-- 4 candidates of size 4
-- 0 candidates of size 5
-- 0 candidates of size 6
-- 26 candidates of size 7
-- 0 candidates of size 8
-- 0 candidates of size 9
-- 176 candidates of size 10
-- 0 candidates of size 11
-- 32 candidates of size 12
-- tested 240 candidates
insert  =  undefined  -- search exhausted

before :: Int -> Tree -> Tree
-- pruning with 5/6 rules
-- 2 candidates of size 1
-- 2 candidates of size 2
-- 0 candidates of size 3
-- 4 candidates of size 4
-- 21 candidates of size 5
-- 0 candidates of size 6
-- 86 candidates of size 7
-- 239 candidates of size 8
-- 104 candidates of size 9
-- 1342 candidates of size 10
-- 3543 candidates of size 11
-- tested 5343 candidates
before  =  undefined  -- search exhausted

beyond :: Int -> Tree -> Tree
-- pruning with 5/6 rules
-- 2 candidates of size 1
-- 2 candidates of size 2
-- 0 candidates of size 3
-- 4 candidates of size 4
-- 21 candidates of size 5
-- 0 candidates of size 6
-- 86 candidates of size 7
-- 239 candidates of size 8
-- 104 candidates of size 9
-- 1342 candidates of size 10
-- 3543 candidates of size 11
-- tested 5343 candidates
beyond  =  undefined  -- search exhausted

before :: Int -> Tree -> Tree
-- pruning with 2/4 rules
-- 2 candidates of size 1
-- 2 candidates of size 2
-- 0 candidates of size 3
-- 4 candidates of size 4
-- 21 candidates of size 5
-- 0 candidates of size 6
-- 68 candidates of size 7
-- 287 candidates of size 8
-- 32 candidates of size 9
-- 1216 candidates of size 10
-- 5103 candidates of size 11
-- 1472 candidates of size 12
-- tested 8207 candidates
before  =  undefined  -- search exhausted

beyond :: Int -> Tree -> Tree
-- pruning with 2/4 rules
-- 2 candidates of size 1
-- 2 candidates of size 2
-- 0 candidates of size 3
-- 4 candidates of size 4
-- 21 candidates of size 5
-- 0 candidates of size 6
-- 68 candidates of size 7
-- 287 candidates of size 8
-- 32 candidates of size 9
-- 1216 candidates of size 10
-- 5103 candidates of size 11
-- 1472 candidates of size 12
-- tested 8207 candidates
beyond  =  undefined  -- search exhausted

union :: Tree -> Tree -> Tree
-- testing 360 combinations of argument values
-- pruning with 6/8 rules
-- 3 candidates of size 1
-- 0 candidates of size 2
-- 0 candidates of size 3
-- 22 candidates of size 4
-- 0 candidates of size 5
-- 68 candidates of size 6
-- 152 candidates of size 7
-- 82 candidates of size 8
-- 2438 candidates of size 9
-- 3970 candidates of size 10
-- tested 6735 candidates
union  =  undefined  -- search exhausted

