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
-- 72 candidates of size 9
-- 0 candidates of size 10
-- 240 candidates of size 11
-- 96 candidates of size 12
-- tested 362 candidates
mem x Leaf  =  False
mem x (Node t1 y t2)  =  mem x t1 || (mem x t2 || x == y)

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
-- 192 candidates of size 10
-- 0 candidates of size 11
-- 384 candidates of size 12
-- tested 346 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
-- 200 candidates of size 10
-- 0 candidates of size 11
-- 32 candidates of size 12
-- tested 264 candidates
cannot conjure

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
-- 1558 candidates of size 10
-- 3543 candidates of size 11
-- 4028 candidates of size 12
-- tested 9587 candidates
cannot conjure

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
cannot conjure

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
cannot conjure

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
-- 240 candidates of size 7
-- 82 candidates of size 8
-- 3018 candidates of size 9
-- tested 3433 candidates
cannot conjure

