Problem: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Proof: Complexity Transformation Processor: strict: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) weak: Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [mark](x0) = x0, [b] = 0, [a] = 4, [active](x0) = x0 + 9, [f](x0, x1) = x0 + x1 orientation: active(f(X,X)) = 2X + 9 >= 4 = mark(f(a(),b())) active(b()) = 9 >= 4 = mark(a()) mark(f(X1,X2)) = X1 + X2 >= X1 + X2 + 9 = active(f(mark(X1),X2)) mark(a()) = 4 >= 13 = active(a()) mark(b()) = 0 >= 9 = active(b()) f(mark(X1),X2) = X1 + X2 >= X1 + X2 = f(X1,X2) f(X1,mark(X2)) = X1 + X2 >= X1 + X2 = f(X1,X2) f(active(X1),X2) = X1 + X2 + 9 >= X1 + X2 = f(X1,X2) f(X1,active(X2)) = X1 + X2 + 9 >= X1 + X2 = f(X1,X2) problem: strict: mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) weak: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Matrix Interpretation Processor: dimension: 1 max_matrix: 1 interpretation: [mark](x0) = x0 + 4, [b] = 0, [a] = 4, [active](x0) = x0 + 8, [f](x0, x1) = x0 + x1 + 8 orientation: mark(f(X1,X2)) = X1 + X2 + 12 >= X1 + X2 + 20 = active(f(mark(X1),X2)) mark(a()) = 8 >= 12 = active(a()) mark(b()) = 4 >= 8 = active(b()) f(mark(X1),X2) = X1 + X2 + 12 >= X1 + X2 + 8 = f(X1,X2) f(X1,mark(X2)) = X1 + X2 + 12 >= X1 + X2 + 8 = f(X1,X2) active(f(X,X)) = 2X + 16 >= 16 = mark(f(a(),b())) active(b()) = 8 >= 8 = mark(a()) f(active(X1),X2) = X1 + X2 + 16 >= X1 + X2 + 8 = f(X1,X2) f(X1,active(X2)) = X1 + X2 + 16 >= X1 + X2 + 8 = f(X1,X2) problem: strict: mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) weak: f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Splitting Processor: strict: mark(b()) -> active(b()) weak: f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) Bounds Processor: bound: 1 enrichment: match automaton: final states: {16,15,13,5,4,3} transitions: mark0(2) -> 16*,5,3 mark0(14) -> 3* mark0(1) -> 3* f0(2,14) -> 4* f0(14,2) -> 4* f0(14,14) -> 4* f0(1,2) -> 4* f0(1,14) -> 4* f0(2,1) -> 4* f0(14,1) -> 4* f0(1,1) -> 4* f0(2,2) -> 4* active0(2) -> 16*,3,5 active0(14) -> 5* active0(1) -> 5* a0() -> 2* b0() -> 1* active1(2) -> 16,15*,5,3 active1(14) -> 13,15*,5 active1(6) -> 13*,3,7 a1() -> 2* b1() -> 14*,1,6 mark1(2) -> 16,15*,3,5 7 -> 3* problem: strict: weak: mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) Qed strict: mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) weak: mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Bounds Processor: bound: 0 enrichment: match automaton: final states: {11,5,4,3} transitions: mark0(2) -> 3* mark0(1) -> 11*,5,3 f0(1,2) -> 4* f0(2,1) -> 4* f0(1,1) -> 4* f0(2,2) -> 4* active0(2) -> 11*,3,5 active0(1) -> 11*,3,5 a0() -> 1* b0() -> 2* problem: strict: mark(a()) -> active(a()) weak: mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Bounds Processor: bound: 1 enrichment: match automaton: final states: {17,12,10,5,4,3} transitions: mark0(2) -> 3* mark0(11) -> 17*,3 mark0(1) -> 17*,5,3 f0(11,2) -> 4* f0(1,2) -> 4* f0(2,1) -> 4* f0(2,11) -> 4* f0(11,1) -> 4* f0(1,1) -> 4* f0(11,11) -> 4* f0(1,11) -> 4* f0(2,2) -> 4* active0(2) -> 17*,3,5 active0(11) -> 17*,5 active0(1) -> 17*,5 a0() -> 1* b0() -> 2* active1(11) -> 10,17,12*,5 active1(8) -> 10*,3,9 a1() -> 11*,1,8 5 -> 17* 9 -> 3* problem: strict: weak: mark(a()) -> active(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(b()) -> active(b()) f(mark(X1),X2) -> f(X1,X2) f(X1,mark(X2)) -> f(X1,X2) active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) f(active(X1),X2) -> f(X1,X2) f(X1,active(X2)) -> f(X1,X2) Qed