YES(?,O(n^2)) Problem: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) c(A(B(x1))) -> B(A(c(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Proof: Complexity Transformation Processor: strict: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) c(A(B(x1))) -> B(A(c(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 weak: Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [C](x0) = x0 + 1, [B](x0) = x0 + 1, [A](x0) = x0, [a](x0) = x0 + 1, [b](x0) = x0, [c](x0) = x0 orientation: a(b(c(x1))) = x1 + 1 >= x1 + 1 = c(b(a(x1))) C(B(A(x1))) = x1 + 2 >= x1 + 2 = A(B(C(x1))) b(a(C(x1))) = x1 + 2 >= x1 + 2 = C(a(b(x1))) c(A(B(x1))) = x1 + 1 >= x1 + 1 = B(A(c(x1))) A(c(b(x1))) = x1 >= x1 = b(c(A(x1))) B(C(a(x1))) = x1 + 3 >= x1 + 3 = a(C(B(x1))) a(A(x1)) = x1 + 1 >= x1 = x1 A(a(x1)) = x1 + 1 >= x1 = x1 b(B(x1)) = x1 + 1 >= x1 = x1 B(b(x1)) = x1 + 1 >= x1 = x1 c(C(x1)) = x1 + 1 >= x1 = x1 C(c(x1)) = x1 + 1 >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) c(A(B(x1))) -> B(A(c(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) weak: a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [C](x0) = x0, [1 1] [B](x0) = [0 1]x0, [A](x0) = x0, [0] [a](x0) = x0 + [1], [1] [b](x0) = x0 + [0], [1] [c](x0) = x0 + [0] orientation: [2] [2] a(b(c(x1))) = x1 + [1] >= x1 + [1] = c(b(a(x1))) [1 1] [1 1] C(B(A(x1))) = [0 1]x1 >= [0 1]x1 = A(B(C(x1))) [1] [1] b(a(C(x1))) = x1 + [1] >= x1 + [1] = C(a(b(x1))) [1 1] [1] [1 1] [1] c(A(B(x1))) = [0 1]x1 + [0] >= [0 1]x1 + [0] = B(A(c(x1))) [2] [2] A(c(b(x1))) = x1 + [0] >= x1 + [0] = b(c(A(x1))) [1 1] [1] [1 1] [0] B(C(a(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = a(C(B(x1))) [0] a(A(x1)) = x1 + [1] >= x1 = x1 [0] A(a(x1)) = x1 + [1] >= x1 = x1 [1 1] [1] b(B(x1)) = [0 1]x1 + [0] >= x1 = x1 [1 1] [1] B(b(x1)) = [0 1]x1 + [0] >= x1 = x1 [1] c(C(x1)) = x1 + [0] >= x1 = x1 [1] C(c(x1)) = x1 + [0] >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) c(A(B(x1))) -> B(A(c(x1))) A(c(b(x1))) -> b(c(A(x1))) weak: B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [C](x0) = x0, [B](x0) = x0, [1 1] [A](x0) = [0 1]x0, [a](x0) = x0, [1 1] [0] [b](x0) = [0 1]x0 + [1], [c](x0) = x0 orientation: [1 1] [0] [1 1] [0] a(b(c(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = c(b(a(x1))) [1 1] [1 1] C(B(A(x1))) = [0 1]x1 >= [0 1]x1 = A(B(C(x1))) [1 1] [0] [1 1] [0] b(a(C(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = C(a(b(x1))) [1 1] [1 1] c(A(B(x1))) = [0 1]x1 >= [0 1]x1 = B(A(c(x1))) [1 2] [1] [1 2] [0] A(c(b(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = b(c(A(x1))) B(C(a(x1))) = x1 >= x1 = a(C(B(x1))) [1 1] a(A(x1)) = [0 1]x1 >= x1 = x1 [1 1] A(a(x1)) = [0 1]x1 >= x1 = x1 [1 1] [0] b(B(x1)) = [0 1]x1 + [1] >= x1 = x1 [1 1] [0] B(b(x1)) = [0 1]x1 + [1] >= x1 = x1 c(C(x1)) = x1 >= x1 = x1 C(c(x1)) = x1 >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) c(A(B(x1))) -> B(A(c(x1))) weak: A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [0] [C](x0) = x0 + [1], [B](x0) = x0, [A](x0) = x0, [a](x0) = x0, [1 1] [b](x0) = [0 1]x0, [c](x0) = x0 orientation: [1 1] [1 1] a(b(c(x1))) = [0 1]x1 >= [0 1]x1 = c(b(a(x1))) [0] [0] C(B(A(x1))) = x1 + [1] >= x1 + [1] = A(B(C(x1))) [1 1] [1] [1 1] [0] b(a(C(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = C(a(b(x1))) c(A(B(x1))) = x1 >= x1 = B(A(c(x1))) [1 1] [1 1] A(c(b(x1))) = [0 1]x1 >= [0 1]x1 = b(c(A(x1))) [0] [0] B(C(a(x1))) = x1 + [1] >= x1 + [1] = a(C(B(x1))) a(A(x1)) = x1 >= x1 = x1 A(a(x1)) = x1 >= x1 = x1 [1 1] b(B(x1)) = [0 1]x1 >= x1 = x1 [1 1] B(b(x1)) = [0 1]x1 >= x1 = x1 [0] c(C(x1)) = x1 + [1] >= x1 = x1 [0] C(c(x1)) = x1 + [1] >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) C(B(A(x1))) -> A(B(C(x1))) c(A(B(x1))) -> B(A(c(x1))) weak: b(a(C(x1))) -> C(a(b(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [1 1] [C](x0) = [0 1]x0, [B](x0) = x0, [0] [A](x0) = x0 + [1], [a](x0) = x0, [b](x0) = x0, [c](x0) = x0 orientation: a(b(c(x1))) = x1 >= x1 = c(b(a(x1))) [1 1] [1] [1 1] [0] C(B(A(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = A(B(C(x1))) [0] [0] c(A(B(x1))) = x1 + [1] >= x1 + [1] = B(A(c(x1))) [1 1] [1 1] b(a(C(x1))) = [0 1]x1 >= [0 1]x1 = C(a(b(x1))) [0] [0] A(c(b(x1))) = x1 + [1] >= x1 + [1] = b(c(A(x1))) [1 1] [1 1] B(C(a(x1))) = [0 1]x1 >= [0 1]x1 = a(C(B(x1))) [0] a(A(x1)) = x1 + [1] >= x1 = x1 [0] A(a(x1)) = x1 + [1] >= x1 = x1 b(B(x1)) = x1 >= x1 = x1 B(b(x1)) = x1 >= x1 = x1 [1 1] c(C(x1)) = [0 1]x1 >= x1 = x1 [1 1] C(c(x1)) = [0 1]x1 >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) c(A(B(x1))) -> B(A(c(x1))) weak: C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [1] [C](x0) = x0 + [1], [0] [B](x0) = x0 + [1], [A](x0) = x0, [a](x0) = x0, [1] [b](x0) = x0 + [0], [1 1] [c](x0) = [0 1]x0 orientation: [1 1] [1] [1 1] [1] a(b(c(x1))) = [0 1]x1 + [0] >= [0 1]x1 + [0] = c(b(a(x1))) [1 1] [1] [1 1] [0] c(A(B(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = B(A(c(x1))) [1] [1] C(B(A(x1))) = x1 + [2] >= x1 + [2] = A(B(C(x1))) [2] [2] b(a(C(x1))) = x1 + [1] >= x1 + [1] = C(a(b(x1))) [1 1] [1] [1 1] [1] A(c(b(x1))) = [0 1]x1 + [0] >= [0 1]x1 + [0] = b(c(A(x1))) [1] [1] B(C(a(x1))) = x1 + [2] >= x1 + [2] = a(C(B(x1))) a(A(x1)) = x1 >= x1 = x1 A(a(x1)) = x1 >= x1 = x1 [1] b(B(x1)) = x1 + [1] >= x1 = x1 [1] B(b(x1)) = x1 + [1] >= x1 = x1 [1 1] [2] c(C(x1)) = [0 1]x1 + [1] >= x1 = x1 [1 1] [1] C(c(x1)) = [0 1]x1 + [1] >= x1 = x1 problem: strict: a(b(c(x1))) -> c(b(a(x1))) weak: c(A(B(x1))) -> B(A(c(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Matrix Interpretation Processor: dimension: 2 max_matrix: [1 1] [0 1] interpretation: [C](x0) = x0, [B](x0) = x0, [A](x0) = x0, [1 1] [a](x0) = [0 1]x0, [b](x0) = x0, [0] [c](x0) = x0 + [1] orientation: [1 1] [1] [1 1] [0] a(b(c(x1))) = [0 1]x1 + [1] >= [0 1]x1 + [1] = c(b(a(x1))) [0] [0] c(A(B(x1))) = x1 + [1] >= x1 + [1] = B(A(c(x1))) C(B(A(x1))) = x1 >= x1 = A(B(C(x1))) [1 1] [1 1] b(a(C(x1))) = [0 1]x1 >= [0 1]x1 = C(a(b(x1))) [0] [0] A(c(b(x1))) = x1 + [1] >= x1 + [1] = b(c(A(x1))) [1 1] [1 1] B(C(a(x1))) = [0 1]x1 >= [0 1]x1 = a(C(B(x1))) [1 1] a(A(x1)) = [0 1]x1 >= x1 = x1 [1 1] A(a(x1)) = [0 1]x1 >= x1 = x1 b(B(x1)) = x1 >= x1 = x1 B(b(x1)) = x1 >= x1 = x1 [0] c(C(x1)) = x1 + [1] >= x1 = x1 [0] C(c(x1)) = x1 + [1] >= x1 = x1 problem: strict: weak: a(b(c(x1))) -> c(b(a(x1))) c(A(B(x1))) -> B(A(c(x1))) C(B(A(x1))) -> A(B(C(x1))) b(a(C(x1))) -> C(a(b(x1))) A(c(b(x1))) -> b(c(A(x1))) B(C(a(x1))) -> a(C(B(x1))) a(A(x1)) -> x1 A(a(x1)) -> x1 b(B(x1)) -> x1 B(b(x1)) -> x1 c(C(x1)) -> x1 C(c(x1)) -> x1 Qed