A: TreeStructures-0.0.1/Data.Heap.Binary-tree.tst B: TreeStructures-0.0.2/Data.Heap.Binary-tree.tst A~ fromList $fOrdBool (: False (: False (: False []))) ==> Node False (Node False (Leaf Leaf) Node False (Leaf Leaf)) B~ fromList $fOrdBool (: False (: False (: False []))) ==> Node False (Leaf Node False (Leaf Node False (Leaf Leaf))) A: fromList $fOrdBool (: False (: False (: True []))) ==> Node False (Node True (Leaf Leaf) Node False (Leaf Leaf)) B: fromList $fOrdBool (: False (: False (: True []))) ==> Node False (Node True (Leaf Leaf) Node False (Leaf Leaf)) A: fromList $fOrdBool (: False (: False [])) ==> Node False (Leaf Node False (Leaf Leaf)) B: fromList $fOrdBool (: False (: False [])) ==> Node False (Leaf Node False (Leaf Leaf)) A~ fromList $fOrdBool (: False (: True (: False []))) ==> Node False (Node False (Leaf Leaf) Node True (Leaf Leaf)) B~ fromList $fOrdBool (: False (: True (: False []))) ==> Node False (Leaf Node False (Leaf Node True (Leaf Leaf))) A: fromList $fOrdBool (: False (: True (: True []))) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) B: fromList $fOrdBool (: False (: True (: True []))) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) A: fromList $fOrdBool (: False (: True [])) ==> Node False (Leaf Node True (Leaf Leaf)) B: fromList $fOrdBool (: False (: True [])) ==> Node False (Leaf Node True (Leaf Leaf)) A~ fromList $fOrdBool (: True (: False (: False []))) ==> Node False (Node False (Leaf Leaf) Node True (Leaf Leaf)) B~ fromList $fOrdBool (: True (: False (: False []))) ==> Node False (Leaf Node False (Leaf Node True (Leaf Leaf))) A: fromList $fOrdBool (: True (: False (: True []))) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) B: fromList $fOrdBool (: True (: False (: True []))) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) A: fromList $fOrdBool (: True (: False [])) ==> Node False (Leaf Node True (Leaf Leaf)) B: fromList $fOrdBool (: True (: False [])) ==> Node False (Leaf Node True (Leaf Leaf)) A: fromList $fOrdBool (: True (: True (: False []))) ==> Node False (Leaf Node True (Leaf Node True (Leaf Leaf))) B: fromList $fOrdBool (: True (: True (: False []))) ==> Node False (Leaf Node True (Leaf Node True (Leaf Leaf))) A~ fromList $fOrdBool (: True (: True (: True []))) ==> Node True (Node True (Leaf Leaf) Node True (Leaf Leaf)) B~ fromList $fOrdBool (: True (: True (: True []))) ==> Node True (Leaf Node True (Leaf Node True (Leaf Leaf))) A: fromList $fOrdBool (: True (: True [])) ==> Node True (Leaf Node True (Leaf Leaf)) B: fromList $fOrdBool (: True (: True [])) ==> Node True (Leaf Node True (Leaf Leaf)) A~ fromList $fOrdInt (: 0 (: 0 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 0 (Leaf Leaf)) B~ fromList $fOrdInt (: 0 (: 0 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 0 (Leaf Leaf))) A: fromList $fOrdInt (: 0 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 0 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 0 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 0 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 0 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 0 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 0 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 0 [])) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 0 [])) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A~ fromList $fOrdInt (: 0 (: 1 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 1 (Leaf Leaf)) B~ fromList $fOrdInt (: 0 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 1 (Leaf Leaf))) A: fromList $fOrdInt (: 0 (: 1 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 1 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 1 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 1 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 1 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 1 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 1 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 1 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A~ fromList $fOrdInt (: 0 (: 2 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 2 (Leaf Leaf)) B~ fromList $fOrdInt (: 0 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 0 (: 2 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 2 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 2 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 2 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 2 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 2 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 2 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 2 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A~ fromList $fOrdInt (: 0 (: 3 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 0 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 0 (: 3 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 3 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 3 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 3 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 3 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 3 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 0 (: 3 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 0 (: 3 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A~ fromList $fOrdInt (: 1 (: 0 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 1 (Leaf Leaf)) B~ fromList $fOrdInt (: 1 (: 0 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 1 (Leaf Leaf))) A: fromList $fOrdInt (: 1 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 0 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 0 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) B: fromList $fOrdInt (: 1 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) A~ fromList $fOrdInt (: 1 (: 1 (: 1 []))) ==> Node 1 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) B~ fromList $fOrdInt (: 1 (: 1 (: 1 []))) ==> Node 1 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) A: fromList $fOrdInt (: 1 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 1 [])) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 1 [])) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B: fromList $fOrdInt (: 1 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A~ fromList $fOrdInt (: 1 (: 2 (: 1 []))) ==> Node 1 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B~ fromList $fOrdInt (: 1 (: 2 (: 1 []))) ==> Node 1 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 1 (: 2 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 2 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 2 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 2 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 2 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 2 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 1 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A~ fromList $fOrdInt (: 1 (: 3 (: 1 []))) ==> Node 1 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 1 (: 3 (: 1 []))) ==> Node 1 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 1 (: 3 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 3 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 3 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 3 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 1 (: 3 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 1 (: 3 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A~ fromList $fOrdInt (: 2 (: 0 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 2 (Leaf Leaf)) B~ fromList $fOrdInt (: 2 (: 0 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 0 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 0 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B: fromList $fOrdInt (: 2 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A~ fromList $fOrdInt (: 2 (: 1 (: 1 []))) ==> Node 1 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B~ fromList $fOrdInt (: 2 (: 1 (: 1 []))) ==> Node 1 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 1 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 1 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) B: fromList $fOrdInt (: 2 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 2 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) B: fromList $fOrdInt (: 2 (: 2 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) A~ fromList $fOrdInt (: 2 (: 2 (: 2 []))) ==> Node 2 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B~ fromList $fOrdInt (: 2 (: 2 (: 2 []))) ==> Node 2 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 2 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 2 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 2 [])) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 2 [])) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 2 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 3 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 2 (: 3 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A~ fromList $fOrdInt (: 2 (: 3 (: 2 []))) ==> Node 2 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 2 (: 3 (: 2 []))) ==> Node 2 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 2 (: 3 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 3 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 2 (: 3 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 2 (: 3 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A~ fromList $fOrdInt (: 3 (: 0 (: 0 []))) ==> Node 0 (Node 0 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 3 (: 0 (: 0 []))) ==> Node 0 (Leaf Node 0 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 0 (: 1 []))) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 0 (: 2 []))) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 0 (: 3 []))) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 0 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 0 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 1 (: 0 []))) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A~ fromList $fOrdInt (: 3 (: 1 (: 1 []))) ==> Node 1 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 3 (: 1 (: 1 []))) ==> Node 1 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 1 (: 2 []))) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 1 (: 3 []))) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 1 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 1 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 2 (: 0 []))) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 2 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 2 (: 1 []))) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A~ fromList $fOrdInt (: 3 (: 2 (: 2 []))) ==> Node 2 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 3 (: 2 (: 2 []))) ==> Node 2 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 2 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 2 (: 3 []))) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 2 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 2 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A: fromList $fOrdInt (: 3 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 3 (: 0 []))) ==> Node 0 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 3 (: 1 []))) ==> Node 1 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 3 (: 1 []))) ==> Node 1 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 3 (: 2 []))) ==> Node 2 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B: fromList $fOrdInt (: 3 (: 3 (: 2 []))) ==> Node 2 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A~ fromList $fOrdInt (: 3 (: 3 (: 3 []))) ==> Node 3 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B~ fromList $fOrdInt (: 3 (: 3 (: 3 []))) ==> Node 3 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A: fromList $fOrdInt (: 3 (: 3 [])) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B: fromList $fOrdInt (: 3 (: 3 [])) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A: head ? (empty ?1) ==> ! Data.Tree.Heap: empty list B: head ? (empty ?1) ==> ! Data.Tree.Heap: empty list A: head ? (fromList $fOrdBool (: False (: False []))) ==> False B: head ? (fromList $fOrdBool (: False (: False []))) ==> False A: head ? (fromList $fOrdBool (: False (: True []))) ==> False B: head ? (fromList $fOrdBool (: False (: True []))) ==> False A: head ? (fromList $fOrdBool (: True (: False []))) ==> False B: head ? (fromList $fOrdBool (: True (: False []))) ==> False A: head ? (fromList $fOrdBool (: True (: True []))) ==> True B: head ? (fromList $fOrdBool (: True (: True []))) ==> True A: head ? (fromList $fOrdInt (: 0 (: 0 []))) ==> 0 B: head ? (fromList $fOrdInt (: 0 (: 0 []))) ==> 0 A: head ? (fromList $fOrdInt (: 0 (: 1 []))) ==> 0 B: head ? (fromList $fOrdInt (: 0 (: 1 []))) ==> 0 A: head ? (fromList $fOrdInt (: 0 (: 2 []))) ==> 0 B: head ? (fromList $fOrdInt (: 0 (: 2 []))) ==> 0 A: head ? (fromList $fOrdInt (: 0 (: 3 []))) ==> 0 B: head ? (fromList $fOrdInt (: 0 (: 3 []))) ==> 0 A: head ? (fromList $fOrdInt (: 1 (: 0 []))) ==> 0 B: head ? (fromList $fOrdInt (: 1 (: 0 []))) ==> 0 A: head ? (fromList $fOrdInt (: 1 (: 1 []))) ==> 1 B: head ? (fromList $fOrdInt (: 1 (: 1 []))) ==> 1 A: head ? (fromList $fOrdInt (: 1 (: 2 []))) ==> 1 B: head ? (fromList $fOrdInt (: 1 (: 2 []))) ==> 1 A: head ? (fromList $fOrdInt (: 1 (: 3 []))) ==> 1 B: head ? (fromList $fOrdInt (: 1 (: 3 []))) ==> 1 A: head ? (fromList $fOrdInt (: 2 (: 0 []))) ==> 0 B: head ? (fromList $fOrdInt (: 2 (: 0 []))) ==> 0 A: head ? (fromList $fOrdInt (: 2 (: 1 []))) ==> 1 B: head ? (fromList $fOrdInt (: 2 (: 1 []))) ==> 1 A: head ? (fromList $fOrdInt (: 2 (: 2 []))) ==> 2 B: head ? (fromList $fOrdInt (: 2 (: 2 []))) ==> 2 A: head ? (fromList $fOrdInt (: 2 (: 3 []))) ==> 2 B: head ? (fromList $fOrdInt (: 2 (: 3 []))) ==> 2 A: head ? (fromList $fOrdInt (: 3 (: 0 []))) ==> 0 B: head ? (fromList $fOrdInt (: 3 (: 0 []))) ==> 0 A: head ? (fromList $fOrdInt (: 3 (: 1 []))) ==> 1 B: head ? (fromList $fOrdInt (: 3 (: 1 []))) ==> 1 A: head ? (fromList $fOrdInt (: 3 (: 2 []))) ==> 2 B: head ? (fromList $fOrdInt (: 3 (: 2 []))) ==> 2 A: head ? (fromList $fOrdInt (: 3 (: 3 []))) ==> 3 B: head ? (fromList $fOrdInt (: 3 (: 3 []))) ==> 3 A: head ? (fromList ($fOrd[] ?1) (: (: ?2 ?3) (: [] []))) ==> [] B: head ? (fromList ($fOrd[] ?1) (: (: ?2 ?3) (: [] []))) ==> [] A: head ? (fromList ($fOrd[] ?1) (: [] (: (: ?2 ?3) []))) ==> [] B: head ? (fromList ($fOrd[] ?1) (: [] (: (: ?2 ?3) []))) ==> [] A: head ? (fromList ($fOrd[] ?1) (: [] (: [] []))) ==> [] B: head ? (fromList ($fOrd[] ?1) (: [] (: [] []))) ==> [] A: head ? (fromList ?1 (: * [])) ==> () B: head ? (fromList ?1 (: * [])) ==> () A: head ? (fromList ?1 []) ==> ! Data.Tree.Heap: empty list B: head ? (fromList ?1 []) ==> ! Data.Tree.Heap: empty list B# head ? (insert $fOrdBool False (insert ?1 False (empty ?2))) ==> False B# head ? (insert $fOrdBool False (insert ?1 True (empty ?2))) ==> False B# head ? (insert $fOrdBool False (singleton ?1 False)) ==> False B# head ? (insert $fOrdBool False (singleton ?1 True)) ==> False B# head ? (insert $fOrdBool True (insert ?1 False (empty ?2))) ==> False B# head ? (insert $fOrdBool True (insert ?1 True (empty ?2))) ==> True B# head ? (insert $fOrdBool True (singleton ?1 False)) ==> False B# head ? (insert $fOrdBool True (singleton ?1 True)) ==> True A# head ? (insert $fOrdBool (insert ?1 (empty ?2) False) False) ==> False A# head ? (insert $fOrdBool (insert ?1 (empty ?2) False) True) ==> False A# head ? (insert $fOrdBool (insert ?1 (empty ?2) True) False) ==> False A# head ? (insert $fOrdBool (insert ?1 (empty ?2) True) True) ==> True A# head ? (insert $fOrdBool (singleton ?1 False) False) ==> False A# head ? (insert $fOrdBool (singleton ?1 False) True) ==> False A# head ? (insert $fOrdBool (singleton ?1 True) False) ==> False A# head ? (insert $fOrdBool (singleton ?1 True) True) ==> True A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 0) 0) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 0) 1) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 0) 2) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 0) 3) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 1) 0) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 1) 1) ==> 1 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 1) 2) ==> 1 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 1) 3) ==> 1 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 2) 0) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 2) 1) ==> 1 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 2) 2) ==> 2 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 2) 3) ==> 2 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 3) 0) ==> 0 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 3) 1) ==> 1 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 3) 2) ==> 2 A# head ? (insert $fOrdInt (insert ?1 (empty ?2) 3) 3) ==> 3 A# head ? (insert $fOrdInt (singleton ?1 0) 0) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 0) 1) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 0) 2) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 0) 3) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 1) 0) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 1) 1) ==> 1 A# head ? (insert $fOrdInt (singleton ?1 1) 2) ==> 1 A# head ? (insert $fOrdInt (singleton ?1 1) 3) ==> 1 A# head ? (insert $fOrdInt (singleton ?1 2) 0) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 2) 1) ==> 1 A# head ? (insert $fOrdInt (singleton ?1 2) 2) ==> 2 A# head ? (insert $fOrdInt (singleton ?1 2) 3) ==> 2 A# head ? (insert $fOrdInt (singleton ?1 3) 0) ==> 0 A# head ? (insert $fOrdInt (singleton ?1 3) 1) ==> 1 A# head ? (insert $fOrdInt (singleton ?1 3) 2) ==> 2 A# head ? (insert $fOrdInt (singleton ?1 3) 3) ==> 3 B# head ? (insert $fOrdInt 0 (insert ?1 0 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 0 (insert ?1 1 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 0 (insert ?1 2 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 0 (insert ?1 3 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 0 (singleton ?1 0)) ==> 0 B# head ? (insert $fOrdInt 0 (singleton ?1 1)) ==> 0 B# head ? (insert $fOrdInt 0 (singleton ?1 2)) ==> 0 B# head ? (insert $fOrdInt 0 (singleton ?1 3)) ==> 0 B# head ? (insert $fOrdInt 1 (insert ?1 0 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 1 (insert ?1 1 (empty ?2))) ==> 1 B# head ? (insert $fOrdInt 1 (insert ?1 2 (empty ?2))) ==> 1 B# head ? (insert $fOrdInt 1 (insert ?1 3 (empty ?2))) ==> 1 B# head ? (insert $fOrdInt 1 (singleton ?1 0)) ==> 0 B# head ? (insert $fOrdInt 1 (singleton ?1 1)) ==> 1 B# head ? (insert $fOrdInt 1 (singleton ?1 2)) ==> 1 B# head ? (insert $fOrdInt 1 (singleton ?1 3)) ==> 1 B# head ? (insert $fOrdInt 2 (insert ?1 0 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 2 (insert ?1 1 (empty ?2))) ==> 1 B# head ? (insert $fOrdInt 2 (insert ?1 2 (empty ?2))) ==> 2 B# head ? (insert $fOrdInt 2 (insert ?1 3 (empty ?2))) ==> 2 B# head ? (insert $fOrdInt 2 (singleton ?1 0)) ==> 0 B# head ? (insert $fOrdInt 2 (singleton ?1 1)) ==> 1 B# head ? (insert $fOrdInt 2 (singleton ?1 2)) ==> 2 B# head ? (insert $fOrdInt 2 (singleton ?1 3)) ==> 2 B# head ? (insert $fOrdInt 3 (insert ?1 0 (empty ?2))) ==> 0 B# head ? (insert $fOrdInt 3 (insert ?1 1 (empty ?2))) ==> 1 B# head ? (insert $fOrdInt 3 (insert ?1 2 (empty ?2))) ==> 2 B# head ? (insert $fOrdInt 3 (insert ?1 3 (empty ?2))) ==> 3 B# head ? (insert $fOrdInt 3 (singleton ?1 0)) ==> 0 B# head ? (insert $fOrdInt 3 (singleton ?1 1)) ==> 1 B# head ? (insert $fOrdInt 3 (singleton ?1 2)) ==> 2 B# head ? (insert $fOrdInt 3 (singleton ?1 3)) ==> 3 B# head ? (insert ($fOrd[] ?1) (: ?2 ?3) (singleton ?4 [])) ==> [] B# head ? (insert ($fOrd[] ?1) [] (singleton ?2 (: ?3 ?4))) ==> [] B# head ? (insert ($fOrd[] ?1) [] (singleton ?2 [])) ==> [] A# head ? (insert ($fOrd[] ?1) (singleton ?2 (: ?3 ?4)) []) ==> [] A# head ? (insert ($fOrd[] ?1) (singleton ?2 []) (: ?3 ?4)) ==> [] A# head ? (insert ($fOrd[] ?1) (singleton ?2 []) []) ==> [] A# head ? (insert ?1 (empty ?2) *) ==> () A# head ? (insert ?1 (fromList ?2 []) *) ==> () A# head ? (insert ?1 (merge ?2 (empty ?3) (empty ?4)) *) ==> () A# head ? (insert ?1 (tail ?2 (insert ?3 (empty ?4) ?5)) *) ==> () A# head ? (insert ?1 (tail ?2 (singleton ?3 ?4)) *) ==> () B# head ? (insert ?1 * (empty ?2)) ==> () B# head ? (insert ?1 * (fromList ?2 [])) ==> () B# head ? (insert ?1 * (merge ?2 (empty ?3) (empty ?4))) ==> () B# head ? (insert ?1 * (tail ?2 (insert ?3 ?4 (empty ?5)))) ==> () B# head ? (insert ?1 * (tail ?2 (singleton ?3 ?4))) ==> () A: head ? (merge $fOrdBool (singleton ?1 False) (singleton ?2 False)) ==> False B: head ? (merge $fOrdBool (singleton ?1 False) (singleton ?2 False)) ==> False A: head ? (merge $fOrdBool (singleton ?1 False) (singleton ?2 True)) ==> False B: head ? (merge $fOrdBool (singleton ?1 False) (singleton ?2 True)) ==> False A: head ? (merge $fOrdBool (singleton ?1 True) (singleton ?2 False)) ==> False B: head ? (merge $fOrdBool (singleton ?1 True) (singleton ?2 False)) ==> False A: head ? (merge $fOrdBool (singleton ?1 True) (singleton ?2 True)) ==> True B: head ? (merge $fOrdBool (singleton ?1 True) (singleton ?2 True)) ==> True A: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 0)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 0)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 1)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 1)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 2)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 2)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 3)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 0) (singleton ?2 3)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 0)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 0)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 1)) ==> 1 B: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 1)) ==> 1 A: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 2)) ==> 1 B: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 2)) ==> 1 A: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 3)) ==> 1 B: head ? (merge $fOrdInt (singleton ?1 1) (singleton ?2 3)) ==> 1 A: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 0)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 0)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 1)) ==> 1 B: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 1)) ==> 1 A: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 2)) ==> 2 B: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 2)) ==> 2 A: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 3)) ==> 2 B: head ? (merge $fOrdInt (singleton ?1 2) (singleton ?2 3)) ==> 2 A: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 0)) ==> 0 B: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 0)) ==> 0 A: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 1)) ==> 1 B: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 1)) ==> 1 A: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 2)) ==> 2 B: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 2)) ==> 2 A: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 3)) ==> 3 B: head ? (merge $fOrdInt (singleton ?1 3) (singleton ?2 3)) ==> 3 A: head ? (merge ?1 (empty ?2) (empty ?3)) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (empty ?2) (empty ?3)) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (empty ?2) (fromList ?3 (: * []))) ==> () B: head ? (merge ?1 (empty ?2) (fromList ?3 (: * []))) ==> () A: head ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> ! Data.Tree.Heap: empty list A# head ? (merge ?1 (empty ?2) (insert ?3 (empty ?4) *)) ==> () B# head ? (merge ?1 (empty ?2) (insert ?3 * (empty ?4))) ==> () A: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (merge ?5 (empty ?6) (empty ?7)))) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (merge ?5 (empty ?6) (empty ?7)))) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (singleton ?5 *))) ==> () B: head ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (singleton ?5 *))) ==> () A: head ? (merge ?1 (empty ?2) (singleton ?3 *)) ==> () B: head ? (merge ?1 (empty ?2) (singleton ?3 *)) ==> () A: head ? (merge ?1 (empty ?2) (tail ?3 (singleton ?4 ?5))) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (empty ?2) (tail ?3 (singleton ?4 ?5))) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (fromList ?2 (: * [])) (empty ?3)) ==> () B: head ? (merge ?1 (fromList ?2 (: * [])) (empty ?3)) ==> () A: head ? (merge ?1 (fromList ?2 (: * [])) (fromList ?3 [])) ==> () B: head ? (merge ?1 (fromList ?2 (: * [])) (fromList ?3 [])) ==> () A: head ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (fromList ?2 []) (fromList ?3 (: * []))) ==> () B: head ? (merge ?1 (fromList ?2 []) (fromList ?3 (: * []))) ==> () A: head ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (fromList ?2 []) (singleton ?3 *)) ==> () B: head ? (merge ?1 (fromList ?2 []) (singleton ?3 *)) ==> () A# head ? (merge ?1 (insert ?2 (empty ?3) *) (empty ?4)) ==> () B# head ? (merge ?1 (insert ?2 * (empty ?3)) (empty ?4)) ==> () A: head ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (merge ?5 (empty ?6) (empty ?7))) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (merge ?5 (empty ?6) (empty ?7))) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (singleton ?2 *) (empty ?3)) ==> () B: head ? (merge ?1 (singleton ?2 *) (empty ?3)) ==> () A: head ? (merge ?1 (singleton ?2 *) (fromList ?3 [])) ==> () B: head ? (merge ?1 (singleton ?2 *) (fromList ?3 [])) ==> () A: head ? (merge ?1 (singleton ?2 *) (tail ?3 (singleton ?4 ?5))) ==> () B: head ? (merge ?1 (singleton ?2 *) (tail ?3 (singleton ?4 ?5))) ==> () A: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (empty ?5)) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (empty ?5)) ==> ! Data.Tree.Heap: empty list A: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (singleton ?5 *)) ==> () B: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (singleton ?5 *)) ==> () A: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (tail ?5 (singleton ?6 ?7))) ==> ! Data.Tree.Heap: empty list B: head ? (merge ?1 (tail ?2 (singleton ?3 ?4)) (tail ?5 (singleton ?6 ?7))) ==> ! Data.Tree.Heap: empty list A: head ? (singleton ?1 *) ==> () B: head ? (singleton ?1 *) ==> () A: head ? (tail ?1 (fromList ?2 (: ?3 []))) ==> ! Data.Tree.Heap: empty list B: head ? (tail ?1 (fromList ?2 (: ?3 []))) ==> ! Data.Tree.Heap: empty list A# head ? (tail ?1 (insert ?2 (empty ?3) ?4)) ==> ! Data.Tree.Heap: empty list A# head ? (tail ?1 (insert ?2 (fromList ?3 []) ?4)) ==> ! Data.Tree.Heap: empty list A# head ? (tail ?1 (insert ?2 (tail ?3 (singleton ?4 ?5)) ?6)) ==> ! Data.Tree.Heap: empty list B# head ? (tail ?1 (insert ?2 ?3 (empty ?4))) ==> ! Data.Tree.Heap: empty list B# head ? (tail ?1 (insert ?2 ?3 (fromList ?4 []))) ==> ! Data.Tree.Heap: empty list B# head ? (tail ?1 (insert ?2 ?3 (tail ?4 (singleton ?5 ?6)))) ==> ! Data.Tree.Heap: empty list A: head ? (tail ?1 (merge ?2 (empty ?3) (singleton ?4 ?5))) ==> ! Data.Tree.Heap: empty list B: head ? (tail ?1 (merge ?2 (empty ?3) (singleton ?4 ?5))) ==> ! Data.Tree.Heap: empty list A: head ? (tail ?1 (merge ?2 (singleton ?3 ?4) (empty ?5))) ==> ! Data.Tree.Heap: empty list B: head ? (tail ?1 (merge ?2 (singleton ?3 ?4) (empty ?5))) ==> ! Data.Tree.Heap: empty list A: head ? (tail ?1 (singleton ?2 ?3)) ==> ! Data.Tree.Heap: empty list B: head ? (tail ?1 (singleton ?2 ?3)) ==> ! Data.Tree.Heap: empty list B# insert $fOrdBool False (fromList ? (: False [])) ==> Node False (Leaf Node False (Leaf Leaf)) B# insert $fOrdBool False (fromList ? (: True [])) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool False (insert $fOrdBool False (singleton ? False)) ==> Node False (Leaf Node False (Leaf Node False (Leaf Leaf))) B# insert $fOrdBool False (insert $fOrdBool False (singleton ? True)) ==> Node False (Leaf Node False (Leaf Node True (Leaf Leaf))) B# insert $fOrdBool False (insert $fOrdBool True (singleton ? False)) ==> Node False (Leaf Node False (Leaf Node True (Leaf Leaf))) B# insert $fOrdBool False (insert $fOrdBool True (singleton ? True)) ==> Node False (Leaf Node True (Leaf Node True (Leaf Leaf))) B# insert $fOrdBool False (insert ? False (empty ?1)) ==> Node False (Leaf Node False (Leaf Leaf)) B# insert $fOrdBool False (insert ? False (fromList ?1 [])) ==> Node False (Leaf Node False (Leaf Leaf)) B# insert $fOrdBool False (insert ? True (empty ?1)) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool False (insert ? True (fromList ?1 [])) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool False (singleton ? False) ==> Node False (Leaf Node False (Leaf Leaf)) B# insert $fOrdBool False (singleton ? True) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (fromList ? (: False [])) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (fromList ? (: True [])) ==> Node True (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (insert $fOrdBool False (singleton ? False)) ==> Node False (Node True (Leaf Leaf) Node False (Leaf Leaf)) B# insert $fOrdBool True (insert $fOrdBool False (singleton ? True)) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) B# insert $fOrdBool True (insert $fOrdBool True (singleton ? False)) ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) B# insert $fOrdBool True (insert $fOrdBool True (singleton ? True)) ==> Node True (Leaf Node True (Leaf Node True (Leaf Leaf))) B# insert $fOrdBool True (insert ? False (empty ?1)) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (insert ? False (fromList ?1 [])) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (insert ? True (empty ?1)) ==> Node True (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (insert ? True (fromList ?1 [])) ==> Node True (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (singleton ? False) ==> Node False (Leaf Node True (Leaf Leaf)) B# insert $fOrdBool True (singleton ? True) ==> Node True (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (fromList ? (: False [])) False ==> Node False (Leaf Node False (Leaf Leaf)) A# insert $fOrdBool (fromList ? (: False [])) True ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (fromList ? (: True [])) False ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (fromList ? (: True [])) True ==> Node True (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? False) False) False ==> Node False (Node False (Leaf Leaf) Node False (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? False) False) True ==> Node False (Node True (Leaf Leaf) Node False (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? False) True) False ==> Node False (Node False (Leaf Leaf) Node True (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? False) True) True ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? True) False) False ==> Node False (Node False (Leaf Leaf) Node True (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? True) False) True ==> Node False (Node True (Leaf Leaf) Node True (Leaf Leaf)) A# insert $fOrdBool (insert $fOrdBool (singleton ? True) True) False ==> Node False (Leaf Node True (Leaf Node True (Leaf Leaf))) A# insert $fOrdBool (insert $fOrdBool (singleton ? True) True) True ==> Node True (Node True (Leaf Leaf) Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (empty ?1) False) False ==> Node False (Leaf Node False (Leaf Leaf)) A# insert $fOrdBool (insert ? (empty ?1) False) True ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (empty ?1) True) False ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (empty ?1) True) True ==> Node True (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (fromList ?1 []) False) False ==> Node False (Leaf Node False (Leaf Leaf)) A# insert $fOrdBool (insert ? (fromList ?1 []) False) True ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (fromList ?1 []) True) False ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (insert ? (fromList ?1 []) True) True ==> Node True (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (singleton ? False) False ==> Node False (Leaf Node False (Leaf Leaf)) A# insert $fOrdBool (singleton ? False) True ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (singleton ? True) False ==> Node False (Leaf Node True (Leaf Leaf)) A# insert $fOrdBool (singleton ? True) True ==> Node True (Leaf Node True (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 0 [])) 0 ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 0 [])) 1 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 0 [])) 2 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 0 [])) 3 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 1 [])) 0 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 1 [])) 1 ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 1 [])) 2 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 1 [])) 3 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 2 [])) 0 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 2 [])) 1 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 2 [])) 2 ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 2 [])) 3 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 3 [])) 0 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 3 [])) 1 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 3 [])) 2 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (fromList ? (: 3 [])) 3 ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 0) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 0) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 0) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 0) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 1) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 1) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 1) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 1) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 2) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 2) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 2) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 2) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 3) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 3) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 3) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 0) 3) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 0) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 0) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 0) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 0) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 1) 1 ==> Node 1 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 1) 2 ==> Node 1 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 1) 3 ==> Node 1 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 2) 0 ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 2) 1 ==> Node 1 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 2) 2 ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 2) 3 ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 3) 0 ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 3) 1 ==> Node 1 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 3) 2 ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 1) 3) 3 ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 0) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 0) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 0) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 0) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 1) 1 ==> Node 1 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 1) 2 ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 1) 3 ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 2) 0 ==> Node 0 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 2) 1 ==> Node 1 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 2) 2 ==> Node 2 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 2) 3 ==> Node 2 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 3) 0 ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 3) 1 ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 3) 2 ==> Node 2 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 2) 3) 3 ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 0) 0 ==> Node 0 (Node 0 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 0) 1 ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 0) 2 ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 0) 3 ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 1) 1 ==> Node 1 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 1) 2 ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 1) 3 ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 2) 0 ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 2) 1 ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 2) 2 ==> Node 2 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 2) 3 ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 3) 0 ==> Node 0 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 3) 1 ==> Node 1 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 3) 2 ==> Node 2 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) A# insert $fOrdInt (insert $fOrdInt (singleton ? 3) 3) 3 ==> Node 3 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 0) 0 ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 0) 1 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 0) 2 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 0) 3 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 1) 1 ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 1) 2 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 1) 3 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 2) 0 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 2) 1 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 2) 2 ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 2) 3 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 3) 0 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 3) 1 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 3) 2 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (empty ?1) 3) 3 ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 0) 0 ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 0) 1 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 0) 2 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 0) 3 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 1) 1 ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 1) 2 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 1) 3 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 2) 0 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 2) 1 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 2) 2 ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 2) 3 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 3) 0 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 3) 1 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 3) 2 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (insert ? (fromList ?1 []) 3) 3 ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 0) 0 ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 0) 1 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 0) 2 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 0) 3 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 1) 0 ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 1) 1 ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 1) 2 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 1) 3 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 2) 0 ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 2) 1 ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 2) 2 ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 2) 3 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 3) 0 ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 3) 1 ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 3) 2 ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A# insert $fOrdInt (singleton ? 3) 3 ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 0 (fromList ? (: 0 [])) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B# insert $fOrdInt 0 (fromList ? (: 1 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 0 (fromList ? (: 2 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 0 (fromList ? (: 3 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 0 (insert $fOrdInt 0 (singleton ? 0)) ==> Node 0 (Leaf Node 0 (Leaf Node 0 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 0 (singleton ? 1)) ==> Node 0 (Leaf Node 0 (Leaf Node 1 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 0 (singleton ? 2)) ==> Node 0 (Leaf Node 0 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 0 (singleton ? 3)) ==> Node 0 (Leaf Node 0 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 1 (singleton ? 0)) ==> Node 0 (Leaf Node 0 (Leaf Node 1 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 1 (singleton ? 1)) ==> Node 0 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 1 (singleton ? 2)) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 1 (singleton ? 3)) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 2 (singleton ? 0)) ==> Node 0 (Leaf Node 0 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 2 (singleton ? 1)) ==> Node 0 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 2 (singleton ? 2)) ==> Node 0 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 2 (singleton ? 3)) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 3 (singleton ? 0)) ==> Node 0 (Leaf Node 0 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 3 (singleton ? 1)) ==> Node 0 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 3 (singleton ? 2)) ==> Node 0 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert $fOrdInt 3 (singleton ? 3)) ==> Node 0 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 0 (insert ? 0 (empty ?1)) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 0 (fromList ?1 [])) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 1 (empty ?1)) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 1 (fromList ?1 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 2 (empty ?1)) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 2 (fromList ?1 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 3 (empty ?1)) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 0 (insert ? 3 (fromList ?1 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 0 (singleton ? 0) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B# insert $fOrdInt 0 (singleton ? 1) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 0 (singleton ? 2) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 0 (singleton ? 3) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (fromList ? (: 0 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (fromList ? (: 1 [])) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (fromList ? (: 2 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (fromList ? (: 3 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 0 (singleton ? 0)) ==> Node 0 (Node 1 (Leaf Leaf) Node 0 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 0 (singleton ? 1)) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 0 (singleton ? 2)) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 0 (singleton ? 3)) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 1 (singleton ? 0)) ==> Node 0 (Node 1 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 1 (singleton ? 1)) ==> Node 1 (Leaf Node 1 (Leaf Node 1 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 1 (singleton ? 2)) ==> Node 1 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 1 (singleton ? 3)) ==> Node 1 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 2 (singleton ? 0)) ==> Node 0 (Node 1 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 2 (singleton ? 1)) ==> Node 1 (Leaf Node 1 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 2 (singleton ? 2)) ==> Node 1 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 2 (singleton ? 3)) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 3 (singleton ? 0)) ==> Node 0 (Node 1 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (insert $fOrdInt 3 (singleton ? 1)) ==> Node 1 (Leaf Node 1 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 3 (singleton ? 2)) ==> Node 1 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 1 (insert $fOrdInt 3 (singleton ? 3)) ==> Node 1 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 1 (insert ? 0 (empty ?1)) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 0 (fromList ?1 [])) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 1 (empty ?1)) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 1 (fromList ?1 [])) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 2 (empty ?1)) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 2 (fromList ?1 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 3 (empty ?1)) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (insert ? 3 (fromList ?1 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 1 (singleton ? 0) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (singleton ? 1) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B# insert $fOrdInt 1 (singleton ? 2) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 1 (singleton ? 3) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (fromList ? (: 0 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (fromList ? (: 1 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (fromList ? (: 2 [])) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (fromList ? (: 3 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 0 (singleton ? 0)) ==> Node 0 (Node 2 (Leaf Leaf) Node 0 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 0 (singleton ? 1)) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 0 (singleton ? 2)) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 0 (singleton ? 3)) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 1 (singleton ? 0)) ==> Node 0 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 1 (singleton ? 1)) ==> Node 1 (Node 2 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 1 (singleton ? 2)) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 1 (singleton ? 3)) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 2 (singleton ? 0)) ==> Node 0 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 2 (singleton ? 1)) ==> Node 1 (Node 2 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 2 (singleton ? 2)) ==> Node 2 (Leaf Node 2 (Leaf Node 2 (Leaf Leaf))) B# insert $fOrdInt 2 (insert $fOrdInt 2 (singleton ? 3)) ==> Node 2 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 2 (insert $fOrdInt 3 (singleton ? 0)) ==> Node 0 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 3 (singleton ? 1)) ==> Node 1 (Node 2 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert $fOrdInt 3 (singleton ? 2)) ==> Node 2 (Leaf Node 2 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 2 (insert $fOrdInt 3 (singleton ? 3)) ==> Node 2 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 2 (insert ? 0 (empty ?1)) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 0 (fromList ?1 [])) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 1 (empty ?1)) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 1 (fromList ?1 [])) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 2 (empty ?1)) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 2 (fromList ?1 [])) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 3 (empty ?1)) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (insert ? 3 (fromList ?1 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 2 (singleton ? 0) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (singleton ? 1) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (singleton ? 2) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B# insert $fOrdInt 2 (singleton ? 3) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (fromList ? (: 0 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (fromList ? (: 1 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (fromList ? (: 2 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (fromList ? (: 3 [])) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 0 (singleton ? 0)) ==> Node 0 (Node 3 (Leaf Leaf) Node 0 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 0 (singleton ? 1)) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 0 (singleton ? 2)) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 0 (singleton ? 3)) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 1 (singleton ? 0)) ==> Node 0 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 1 (singleton ? 1)) ==> Node 1 (Node 3 (Leaf Leaf) Node 1 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 1 (singleton ? 2)) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 1 (singleton ? 3)) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 2 (singleton ? 0)) ==> Node 0 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 2 (singleton ? 1)) ==> Node 1 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 2 (singleton ? 2)) ==> Node 2 (Node 3 (Leaf Leaf) Node 2 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 2 (singleton ? 3)) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 3 (singleton ? 0)) ==> Node 0 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 3 (singleton ? 1)) ==> Node 1 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 3 (singleton ? 2)) ==> Node 2 (Node 3 (Leaf Leaf) Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert $fOrdInt 3 (singleton ? 3)) ==> Node 3 (Leaf Node 3 (Leaf Node 3 (Leaf Leaf))) B# insert $fOrdInt 3 (insert ? 0 (empty ?1)) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 0 (fromList ?1 [])) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 1 (empty ?1)) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 1 (fromList ?1 [])) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 2 (empty ?1)) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 2 (fromList ?1 [])) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 3 (empty ?1)) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (insert ? 3 (fromList ?1 [])) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (singleton ? 0) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (singleton ? 1) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (singleton ? 2) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B# insert $fOrdInt 3 (singleton ? 3) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdBool (singleton ? False) (singleton ?1 False) ==> Node False (Leaf Node False (Leaf Leaf)) B: merge $fOrdBool (singleton ? False) (singleton ?1 False) ==> Node False (Leaf Node False (Leaf Leaf)) A: merge $fOrdBool (singleton ? False) (singleton ?1 True) ==> Node False (Leaf Node True (Leaf Leaf)) B: merge $fOrdBool (singleton ? False) (singleton ?1 True) ==> Node False (Leaf Node True (Leaf Leaf)) A: merge $fOrdBool (singleton ? True) (singleton ?1 False) ==> Node False (Leaf Node True (Leaf Leaf)) B: merge $fOrdBool (singleton ? True) (singleton ?1 False) ==> Node False (Leaf Node True (Leaf Leaf)) A: merge $fOrdBool (singleton ? True) (singleton ?1 True) ==> Node True (Leaf Node True (Leaf Leaf)) B: merge $fOrdBool (singleton ? True) (singleton ?1 True) ==> Node True (Leaf Node True (Leaf Leaf)) A: merge $fOrdInt (singleton ? 0) (singleton ?1 0) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 0) (singleton ?1 0) ==> Node 0 (Leaf Node 0 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 0) (singleton ?1 1) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 0) (singleton ?1 1) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 0) (singleton ?1 2) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 0) (singleton ?1 2) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 0) (singleton ?1 3) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 0) (singleton ?1 3) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 1) (singleton ?1 0) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 1) (singleton ?1 0) ==> Node 0 (Leaf Node 1 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 1) (singleton ?1 1) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 1) (singleton ?1 1) ==> Node 1 (Leaf Node 1 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 1) (singleton ?1 2) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 1) (singleton ?1 2) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 1) (singleton ?1 3) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 1) (singleton ?1 3) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 2) (singleton ?1 0) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 2) (singleton ?1 0) ==> Node 0 (Leaf Node 2 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 2) (singleton ?1 1) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 2) (singleton ?1 1) ==> Node 1 (Leaf Node 2 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 2) (singleton ?1 2) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 2) (singleton ?1 2) ==> Node 2 (Leaf Node 2 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 2) (singleton ?1 3) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 2) (singleton ?1 3) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 3) (singleton ?1 0) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 3) (singleton ?1 0) ==> Node 0 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 3) (singleton ?1 1) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 3) (singleton ?1 1) ==> Node 1 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 3) (singleton ?1 2) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 3) (singleton ?1 2) ==> Node 2 (Leaf Node 3 (Leaf Leaf)) A: merge $fOrdInt (singleton ? 3) (singleton ?1 3) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) B: merge $fOrdInt (singleton ? 3) (singleton ?1 3) ==> Node 3 (Leaf Node 3 (Leaf Leaf)) A: null ? (empty ?1) ==> True B: null ? (empty ?1) ==> True A: null ? (fromList ?1 (: ?2 [])) ==> False B: null ? (fromList ?1 (: ?2 [])) ==> False A: null ? (fromList ?1 []) ==> True B: null ? (fromList ?1 []) ==> True A# null ? (insert ?1 (empty ?2) ?3) ==> False A# null ? (insert ?1 (fromList ?2 []) ?3) ==> False A# null ? (insert ?1 (tail ?2 (singleton ?3 ?4)) ?5) ==> False B# null ? (insert ?1 ?2 (empty ?3)) ==> False B# null ? (insert ?1 ?2 (fromList ?3 [])) ==> False B# null ? (insert ?1 ?2 (tail ?3 (singleton ?4 ?5))) ==> False A: null ? (merge ?1 (empty ?2) (empty ?3)) ==> True B: null ? (merge ?1 (empty ?2) (empty ?3)) ==> True A: null ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> True B: null ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> True A: null ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> True B: null ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> True A: null ? (merge ?1 (empty ?2) (singleton ?3 ?4)) ==> False B: null ? (merge ?1 (empty ?2) (singleton ?3 ?4)) ==> False A: null ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> True B: null ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> True A: null ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> True B: null ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> True A: null ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> True B: null ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> True A: null ? (merge ?1 (singleton ?2 ?3) (empty ?4)) ==> False B: null ? (merge ?1 (singleton ?2 ?3) (empty ?4)) ==> False A: null ? (singleton ?1 ?2) ==> False B: null ? (singleton ?1 ?2) ==> False A: null ? (tail ?1 (fromList ?2 (: ?3 []))) ==> True B: null ? (tail ?1 (fromList ?2 (: ?3 []))) ==> True A# null ? (tail ?1 (insert ?2 (empty ?3) ?4)) ==> True B# null ? (tail ?1 (insert ?2 ?3 (empty ?4))) ==> True A: null ? (tail ?1 (singleton ?2 ?3)) ==> True B: null ? (tail ?1 (singleton ?2 ?3)) ==> True A: tail ? (empty ?1) ==> ! Data.Heap empty list B: tail ? (empty ?1) ==> ! Data.Heap empty list A: tail ? (fromList ?1 []) ==> ! Data.Heap empty list B: tail ? (fromList ?1 []) ==> ! Data.Heap empty list B# tail ? (insert $fOrdBool False (singleton ?1 False)) ==> Node False (Leaf Leaf) B# tail ? (insert $fOrdBool False (singleton ?1 True)) ==> Node True (Leaf Leaf) B# tail ? (insert $fOrdBool True (singleton ?1 False)) ==> Node True (Leaf Leaf) B# tail ? (insert $fOrdBool True (singleton ?1 True)) ==> Node True (Leaf Leaf) A# tail ? (insert $fOrdBool (singleton ?1 False) False) ==> Node False (Leaf Leaf) A# tail ? (insert $fOrdBool (singleton ?1 False) True) ==> Node True (Leaf Leaf) A# tail ? (insert $fOrdBool (singleton ?1 True) False) ==> Node True (Leaf Leaf) A# tail ? (insert $fOrdBool (singleton ?1 True) True) ==> Node True (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 0) 0) ==> Node 0 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 0) 1) ==> Node 1 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 0) 2) ==> Node 2 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 0) 3) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 1) 0) ==> Node 1 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 1) 1) ==> Node 1 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 1) 2) ==> Node 2 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 1) 3) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 2) 0) ==> Node 2 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 2) 1) ==> Node 2 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 2) 2) ==> Node 2 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 2) 3) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 3) 0) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 3) 1) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 3) 2) ==> Node 3 (Leaf Leaf) A# tail ? (insert $fOrdInt (singleton ?1 3) 3) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 0 (singleton ?1 0)) ==> Node 0 (Leaf Leaf) B# tail ? (insert $fOrdInt 0 (singleton ?1 1)) ==> Node 1 (Leaf Leaf) B# tail ? (insert $fOrdInt 0 (singleton ?1 2)) ==> Node 2 (Leaf Leaf) B# tail ? (insert $fOrdInt 0 (singleton ?1 3)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 1 (singleton ?1 0)) ==> Node 1 (Leaf Leaf) B# tail ? (insert $fOrdInt 1 (singleton ?1 1)) ==> Node 1 (Leaf Leaf) B# tail ? (insert $fOrdInt 1 (singleton ?1 2)) ==> Node 2 (Leaf Leaf) B# tail ? (insert $fOrdInt 1 (singleton ?1 3)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 2 (singleton ?1 0)) ==> Node 2 (Leaf Leaf) B# tail ? (insert $fOrdInt 2 (singleton ?1 1)) ==> Node 2 (Leaf Leaf) B# tail ? (insert $fOrdInt 2 (singleton ?1 2)) ==> Node 2 (Leaf Leaf) B# tail ? (insert $fOrdInt 2 (singleton ?1 3)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 3 (singleton ?1 0)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 3 (singleton ?1 1)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 3 (singleton ?1 2)) ==> Node 3 (Leaf Leaf) B# tail ? (insert $fOrdInt 3 (singleton ?1 3)) ==> Node 3 (Leaf Leaf) A: tail ? (merge ?1 (empty ?2) (empty ?3)) ==> ! Data.Heap empty list B: tail ? (merge ?1 (empty ?2) (empty ?3)) ==> ! Data.Heap empty list A: tail ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> ! Data.Heap empty list B: tail ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> ! Data.Heap empty list A: tail ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> ! Data.Heap empty list B: tail ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> ! Data.Heap empty list A: tail ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> ! Data.Heap empty list B: tail ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> ! Data.Heap empty list A: tail ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> ! Data.Heap empty list B: tail ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> ! Data.Heap empty list A: tail ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> ! Data.Heap empty list B: tail ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> ! Data.Heap empty list A: tail ? (tail ?1 (fromList ?2 (: ?3 []))) ==> ! Data.Heap empty list B: tail ? (tail ?1 (fromList ?2 (: ?3 []))) ==> ! Data.Heap empty list A# tail ? (tail ?1 (insert ?2 (empty ?3) ?4)) ==> ! Data.Heap empty list A# tail ? (tail ?1 (insert ?2 (fromList ?3 []) ?4)) ==> ! Data.Heap empty list A# tail ? (tail ?1 (insert ?2 (tail ?3 (singleton ?4 ?5)) ?6)) ==> ! Data.Heap empty list B# tail ? (tail ?1 (insert ?2 ?3 (empty ?4))) ==> ! Data.Heap empty list B# tail ? (tail ?1 (insert ?2 ?3 (fromList ?4 []))) ==> ! Data.Heap empty list B# tail ? (tail ?1 (insert ?2 ?3 (tail ?4 (singleton ?5 ?6)))) ==> ! Data.Heap empty list A: tail ? (tail ?1 (singleton ?2 ?3)) ==> ! Data.Heap empty list B: tail ? (tail ?1 (singleton ?2 ?3)) ==> ! Data.Heap empty list A: toList ? (empty ?1) ==> [] B: toList ? (empty ?1) ==> [] A: toList ? (fromList ?1 (: * [])) ==> [()] B: toList ? (fromList ?1 (: * [])) ==> [()] A: toList ? (fromList ?1 []) ==> [] B: toList ? (fromList ?1 []) ==> [] A# toList ? (insert ?1 (empty ?2) *) ==> [()] A# toList ? (insert ?1 (fromList ?2 []) *) ==> [()] A# toList ? (insert ?1 (tail ?2 (singleton ?3 ?4)) *) ==> [()] B# toList ? (insert ?1 * (empty ?2)) ==> [()] B# toList ? (insert ?1 * (fromList ?2 [])) ==> [()] B# toList ? (insert ?1 * (tail ?2 (singleton ?3 ?4))) ==> [()] A: toList ? (merge ?1 (empty ?2) (empty ?3)) ==> [] B: toList ? (merge ?1 (empty ?2) (empty ?3)) ==> [] A: toList ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> [] B: toList ? (merge ?1 (empty ?2) (fromList ?3 [])) ==> [] A: toList ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> [] B: toList ? (merge ?1 (empty ?2) (merge ?3 (empty ?4) (empty ?5))) ==> [] A: toList ? (merge ?1 (empty ?2) (singleton ?3 *)) ==> [()] B: toList ? (merge ?1 (empty ?2) (singleton ?3 *)) ==> [()] A: toList ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> [] B: toList ? (merge ?1 (fromList ?2 []) (empty ?3)) ==> [] A: toList ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> [] B: toList ? (merge ?1 (fromList ?2 []) (fromList ?3 [])) ==> [] A: toList ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> [] B: toList ? (merge ?1 (merge ?2 (empty ?3) (empty ?4)) (empty ?5)) ==> [] A: toList ? (merge ?1 (singleton ?2 *) (empty ?3)) ==> [()] B: toList ? (merge ?1 (singleton ?2 *) (empty ?3)) ==> [()] A: toList ? (singleton ?1 *) ==> [()] B: toList ? (singleton ?1 *) ==> [()] A: toList ? (tail ?1 (fromList ?2 (: ?3 []))) ==> [] B: toList ? (tail ?1 (fromList ?2 (: ?3 []))) ==> [] A# toList ? (tail ?1 (insert ?2 (empty ?3) ?4)) ==> [] B# toList ? (tail ?1 (insert ?2 ?3 (empty ?4))) ==> [] A: toList ? (tail ?1 (singleton ?2 ?3)) ==> [] B: toList ? (tail ?1 (singleton ?2 ?3)) ==> []