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
-- 3 candidates of size 4
-- 0 candidates of size 5
-- 0 candidates of size 6
-- 0 candidates of size 7
-- 31 candidates of size 8
-- 92 candidates of size 9
-- 0 candidates of size 10
-- 304 candidates of size 11
-- 151 candidates of size 12
-- tested 497 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
-- 1 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
-- 24 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 371 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
-- 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
-- 74 candidates of size 7
-- 335 candidates of size 8
-- 32 candidates of size 9
-- 1504 candidates of size 10
-- 6708 candidates of size 11
-- 1760 candidates of size 12
-- tested 10442 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
-- 3555 candidates of size 11
-- 4028 candidates of size 12
-- tested 9599 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
-- 12 candidates of size 2
-- 32 candidates of size 3
-- 58 candidates of size 4
-- 434 candidates of size 5
-- 922 candidates of size 6
-- 3088 candidates of size 7
-- 14022 candidates of size 8
-- tested 18571 candidates
cannot conjure

