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)) ==> []