WORST_CASE(?,O(n^2)) Solution: --------- !EQ :: [A(0, 0) x A(0, 0)] -(0)-> A(7, 10) 0 :: [] -(0)-> A(0, 0) Cons :: [A(0, 0) x A(0, 0)] -(0)-> A(0, 0) Cons :: [A(0, 0) x A(1, 0)] -(1)-> A(1, 0) Cons :: [A(0, 0) x A(5, 1)] -(4)-> A(4, 1) Cons :: [A(0, 0) x A(14, 4)] -(10)-> A(10, 4) Cons :: [A(0, 0) x A(15, 11)] -(4)-> A(4, 11) Cons :: [A(0, 0) x A(10, 8)] -(2)-> A(2, 8) Cons :: [A(0, 0) x A(9, 2)] -(7)-> A(7, 2) Cons :: [A(0, 0) x A(10, 4)] -(6)-> A(6, 4) Cons :: [A(0, 0) x A(4, 4)] -(0)-> A(0, 4) Cons :: [A(0, 0) x A(2, 2)] -(0)-> A(0, 2) False :: [] -(0)-> A(1, 4) False :: [] -(0)-> A(0, 1) False :: [] -(0)-> A(7, 8) False :: [] -(0)-> A(0, 2) False :: [] -(0)-> A(15, 15) False :: [] -(0)-> A(13, 15) False :: [] -(0)-> A(13, 13) Nil :: [] -(0)-> A(10, 4) Nil :: [] -(0)-> A(4, 1) Nil :: [] -(0)-> A(1, 0) Nil :: [] -(0)-> A(0, 0) Nil :: [] -(0)-> A(2, 8) Nil :: [] -(0)-> A(4, 11) Nil :: [] -(0)-> A(7, 2) Nil :: [] -(0)-> A(7, 7) Nil :: [] -(0)-> A(7, 13) Nil :: [] -(0)-> A(11, 15) S :: [A(0, 0)] -(0)-> A(0, 0) True :: [] -(0)-> A(1, 4) True :: [] -(0)-> A(0, 1) True :: [] -(0)-> A(7, 8) True :: [] -(0)-> A(0, 2) True :: [] -(0)-> A(15, 15) True :: [] -(0)-> A(13, 15) True :: [] -(0)-> A(13, 13) and :: [A(1, 4) x A(0, 1)] -(0)-> A(11, 12) domatch :: [A(4, 1) x A(10, 4) x A(0, 0)] -(13)-> A(0, 0) domatch[Ite] :: [A(7, 8) x A(4, 1) x A(6, 4) x A(0, 0)] -(7)-> A(0, 0) eqNatList :: [A(4, 11) x A(2, 8)] -(1)-> A(12, 12) eqNatList[Ite] :: [A(0, 2) x A(0, 0) x A(6, 8) x A(0, 0) x A(4, 11)] -(3)-> A(12, 12) notEmpty :: [A(7, 2)] -(8)-> A(0, 0) prefix :: [A(0, 0) x A(1, 0)] -(1)-> A(8, 9) strmatch :: [A(10, 15) x A(14, 10)] -(15)-> A(0, 0) Cost Free Signatures: --------------------- !EQ :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) !EQ :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(9, 13) !EQ :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(13, 13) !EQ :: [A_cf(0, 0) x A_cf(0, 0)] -(1)-> A_cf(13, 9) 0 :: [] -(0)-> A_cf(0, 0) Cons :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) Cons :: [A_cf(0, 0) x A_cf(1, 1)] -(0)-> A_cf(0, 1) Cons :: [A_cf(0, 0) x A_cf(11, 0)] -(11)-> A_cf(11, 0) Cons :: [A_cf(0, 0) x A_cf(4, 0)] -(4)-> A_cf(4, 0) False :: [] -(0)-> A_cf(0, 0) False :: [] -(0)-> A_cf(1, 1) False :: [] -(0)-> A_cf(0, 1) False :: [] -(0)-> A_cf(3, 3) False :: [] -(0)-> A_cf(15, 15) False :: [] -(0)-> A_cf(11, 15) False :: [] -(0)-> A_cf(9, 15) False :: [] -(0)-> A_cf(13, 15) False :: [] -(0)-> A_cf(7, 3) False :: [] -(0)-> A_cf(15, 12) False :: [] -(0)-> A_cf(15, 11) False :: [] -(0)-> A_cf(1, 3) False :: [] -(0)-> A_cf(2, 2) Nil :: [] -(0)-> A_cf(0, 0) Nil :: [] -(0)-> A_cf(3, 3) Nil :: [] -(0)-> A_cf(15, 11) Nil :: [] -(0)-> A_cf(11, 11) Nil :: [] -(0)-> A_cf(15, 15) Nil :: [] -(0)-> A_cf(11, 0) Nil :: [] -(0)-> A_cf(4, 0) S :: [A_cf(0, 0)] -(0)-> A_cf(0, 0) True :: [] -(0)-> A_cf(0, 0) True :: [] -(0)-> A_cf(1, 1) True :: [] -(0)-> A_cf(0, 1) True :: [] -(0)-> A_cf(3, 3) True :: [] -(0)-> A_cf(15, 15) True :: [] -(0)-> A_cf(11, 15) True :: [] -(0)-> A_cf(7, 3) True :: [] -(0)-> A_cf(15, 9) True :: [] -(0)-> A_cf(1, 3) True :: [] -(0)-> A_cf(2, 2) and :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) and :: [A_cf(0, 1) x A_cf(3, 3)] -(0)-> A_cf(12, 12) and :: [A_cf(1, 1) x A_cf(3, 3)] -(0)-> A_cf(12, 12) domatch :: [A_cf(0, 0) x A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) domatch[Ite] :: [A_cf(1, 1) x A_cf(0, 0) x A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) domatch[Ite] :: [A_cf(0, 0) x A_cf(0, 0) x A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) eqNatList :: [A_cf(11, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) eqNatList :: [A_cf(0, 0) x A_cf(4, 0)] -(2)-> A_cf(0, 0) eqNatList[Ite] :: [A_cf(7, 3) x A_cf(0, 0) x A_cf(0, 0) x A_cf(0, 0) x A_cf(11, 0)] -(1)-> A_cf(0, 0) eqNatList[Ite] :: [A_cf(1, 1) x A_cf(0, 0) x A_cf(4, 0) x A_cf(0, 0) x A_cf(0, 0)] -(2)-> A_cf(0, 0) prefix :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(0, 0) prefix :: [A_cf(0, 0) x A_cf(0, 0)] -(0)-> A_cf(12, 12) Base Constructors: ------------------ 0_A :: [] -(0)-> A(1, 0) 0_A :: [] -(0)-> A(0, 1) Cons_A :: [A(0, 0) x A(1, 0)] -(1)-> A(1, 0) Cons_A :: [A(0, 0) x A(1, 1)] -(0)-> A(0, 1) False_A :: [] -(0)-> A(1, 0) False_A :: [] -(0)-> A(0, 1) Nil_A :: [] -(0)-> A(1, 0) Nil_A :: [] -(0)-> A(0, 1) S_A :: [A(0, 0)] -(1)-> A(1, 0) S_A :: [A(1, 1)] -(1)-> A(0, 1) True_A :: [] -(0)-> A(1, 0) True_A :: [] -(0)-> A(0, 1)