mem :: Int -> Tree -> Bool
-- testing 360 combinations of argument values
-- pruning with 9/17 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
-- 4 candidates of size 7
-- 0 candidates of size 8
-- 80 candidates of size 9
-- 0 candidates of size 10
-- 144 candidates of size 11
-- 48 candidates of size 12
-- 0 candidates of size 13
-- 1136 candidates of size 14
-- 0 candidates of size 15
-- 5056 candidates of size 16
-- tested 2632 candidates
mem x Leaf  =  False
mem x (Node t1 y t2)
  | x < y  =  mem x t1
  | y < x  =  mem x t2
  | otherwise  =  True

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 4/4 rules
-- 1 candidates of size 1
-- 1 candidates of size 2
-- 0 candidates of size 3
-- 1 candidates of size 4
-- 6 candidates of size 5
-- 1 candidates of size 6
-- 2 candidates of size 7
-- 22 candidates of size 8
-- 22 candidates of size 9
-- 39 candidates of size 10
-- 148 candidates of size 11
-- 310 candidates of size 12
-- tested 553 candidates
insert  =  undefined  -- search exhausted
-- could not find implementation using only
-- Node, unit, guarded equations, and (<)
-- consider increasing target/maxSize or refining the ingredients

insert :: Int -> Tree -> Tree
-- testing 360 combinations of argument values
-- pruning with 1/2 rules
-- 1 candidates of size 1
-- 1 candidates of size 2
-- 0 candidates of size 3
-- 1 candidates of size 4
-- 6 candidates of size 5
-- 1 candidates of size 6
-- 2 candidates of size 7
-- 25 candidates of size 8
-- 25 candidates of size 9
-- 42 candidates of size 10
-- 198 candidates of size 11
-- 380 candidates of size 12
-- tested 682 candidates
insert  =  undefined  -- search exhausted
-- could not find implementation using only
-- Node, unit, compare, and case
-- consider increasing target/maxSize or refining the ingredients

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
-- could not find implementation using only
-- Leaf, Node, (==), (<), and guarded equations
-- consider increasing target/maxSize or refining the ingredients

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
-- could not find implementation using only
-- Leaf, Node, (==), (<=), and guarded equations
-- consider increasing target/maxSize or refining the ingredients

before :: Int -> Tree -> Tree
-- pruning with 3/5 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
-- 60 candidates of size 7
-- 176 candidates of size 8
-- 32 candidates of size 9
-- 716 candidates of size 10
-- 2373 candidates of size 11
-- 896 candidates of size 12
-- tested 4282 candidates
before  =  undefined  -- search exhausted
-- could not find implementation using only
-- Leaf, Node, compare, and case
-- consider increasing target/maxSize or refining the ingredients

beyond :: Int -> Tree -> Tree
-- pruning with 3/5 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
-- 60 candidates of size 7
-- 176 candidates of size 8
-- 32 candidates of size 9
-- 716 candidates of size 10
-- 2373 candidates of size 11
-- 896 candidates of size 12
-- tested 4282 candidates
beyond  =  undefined  -- search exhausted
-- could not find implementation using only
-- Leaf, Node, compare, and case
-- consider increasing target/maxSize or refining the ingredients

insert :: Int -> Tree -> Tree
-- testing 360 combinations of argument values
-- pruning with 3/6 rules
-- 1 candidates of size 1
-- 0 candidates of size 2
-- 2 candidates of size 3
-- 1 candidates of size 4
-- 1 candidates of size 5
-- 6 candidates of size 6
-- 2 candidates of size 7
-- 15 candidates of size 8
-- tested 25 candidates
insert x t1  =  Node (before x t1) x (beyond x t1)

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
-- 4322 candidates of size 10
-- tested 7087 candidates
union  =  undefined  -- search exhausted
-- could not find implementation using only
-- Leaf, Node, before, and beyond
-- consider increasing target/maxSize or refining the ingredients

