YES Problem: g(A()) -> A() g(B()) -> A() g(B()) -> B() g(C()) -> A() g(C()) -> B() g(C()) -> C() foldf(x,nil()) -> x foldf(x,cons(y,z)) -> f(foldf(x,z),y) f(t,x) -> f'(t,g(x)) f'(triple(a,b,c),C()) -> triple(a,b,cons(C(),c)) f'(triple(a,b,c),B()) -> f(triple(a,b,c),A()) f'(triple(a,b,c),A()) -> f''(foldf(triple(cons(A(),a),nil(),c),b)) f''(triple(a,b,c)) -> foldf(triple(a,b,nil()),c) Proof: DP Processor: DPs: foldf#(x,cons(y,z)) -> foldf#(x,z) foldf#(x,cons(y,z)) -> f#(foldf(x,z),y) f#(t,x) -> g#(x) f#(t,x) -> f'#(t,g(x)) f'#(triple(a,b,c),B()) -> f#(triple(a,b,c),A()) f'#(triple(a,b,c),A()) -> foldf#(triple(cons(A(),a),nil(),c),b) f'#(triple(a,b,c),A()) -> f''#(foldf(triple(cons(A(),a),nil(),c),b)) f''#(triple(a,b,c)) -> foldf#(triple(a,b,nil()),c) TRS: g(A()) -> A() g(B()) -> A() g(B()) -> B() g(C()) -> A() g(C()) -> B() g(C()) -> C() foldf(x,nil()) -> x foldf(x,cons(y,z)) -> f(foldf(x,z),y) f(t,x) -> f'(t,g(x)) f'(triple(a,b,c),C()) -> triple(a,b,cons(C(),c)) f'(triple(a,b,c),B()) -> f(triple(a,b,c),A()) f'(triple(a,b,c),A()) -> f''(foldf(triple(cons(A(),a),nil(),c),b)) f''(triple(a,b,c)) -> foldf(triple(a,b,nil()),c) Matrix Interpretation Processor: dim=1 interpretation: [f''#](x0) = 2x0 + 2, [f'#](x0, x1) = 2x0 + x1 + 3, [f#](x0, x1) = 2x0 + 2x1 + 4, [foldf#](x0, x1) = 2x0 + 2x1 + 1, [g#](x0) = 2x0, [f''](x0) = x0 + 2, [triple](x0, x1, x2) = 2x1 + x2 + 2, [f'](x0, x1) = x0 + 4x1 + 2, [f](x0, x1) = x0 + 4x1 + 2, [cons](x0, x1) = 4x0 + x1 + 2, [foldf](x0, x1) = x0 + x1, [nil] = 0, [C] = 5, [B] = 4, [g](x0) = x0, [A] = 0 orientation: foldf#(x,cons(y,z)) = 2x + 8y + 2z + 5 >= 2x + 2z + 1 = foldf#(x,z) foldf#(x,cons(y,z)) = 2x + 8y + 2z + 5 >= 2x + 2y + 2z + 4 = f#(foldf(x,z),y) f#(t,x) = 2t + 2x + 4 >= 2x = g#(x) f#(t,x) = 2t + 2x + 4 >= 2t + x + 3 = f'#(t,g(x)) f'#(triple(a,b,c),B()) = 4b + 2c + 11 >= 4b + 2c + 8 = f#(triple(a,b,c),A()) f'#(triple(a,b,c),A()) = 4b + 2c + 7 >= 2b + 2c + 5 = foldf#(triple(cons(A(),a),nil(),c),b) f'#(triple(a,b,c),A()) = 4b + 2c + 7 >= 2b + 2c + 6 = f''#(foldf(triple(cons(A(),a),nil(),c),b)) f''#(triple(a,b,c)) = 4b + 2c + 6 >= 4b + 2c + 5 = foldf#(triple(a,b,nil()),c) g(A()) = 0 >= 0 = A() g(B()) = 4 >= 0 = A() g(B()) = 4 >= 4 = B() g(C()) = 5 >= 0 = A() g(C()) = 5 >= 4 = B() g(C()) = 5 >= 5 = C() foldf(x,nil()) = x >= x = x foldf(x,cons(y,z)) = x + 4y + z + 2 >= x + 4y + z + 2 = f(foldf(x,z),y) f(t,x) = t + 4x + 2 >= t + 4x + 2 = f'(t,g(x)) f'(triple(a,b,c),C()) = 2b + c + 24 >= 2b + c + 24 = triple(a,b,cons(C(),c)) f'(triple(a,b,c),B()) = 2b + c + 20 >= 2b + c + 4 = f(triple(a,b,c),A()) f'(triple(a,b,c),A()) = 2b + c + 4 >= b + c + 4 = f''(foldf(triple(cons(A(),a),nil(),c),b)) f''(triple(a,b,c)) = 2b + c + 4 >= 2b + c + 2 = foldf(triple(a,b,nil()),c) problem: DPs: TRS: g(A()) -> A() g(B()) -> A() g(B()) -> B() g(C()) -> A() g(C()) -> B() g(C()) -> C() foldf(x,nil()) -> x foldf(x,cons(y,z)) -> f(foldf(x,z),y) f(t,x) -> f'(t,g(x)) f'(triple(a,b,c),C()) -> triple(a,b,cons(C(),c)) f'(triple(a,b,c),B()) -> f(triple(a,b,c),A()) f'(triple(a,b,c),A()) -> f''(foldf(triple(cons(A(),a),nil(),c),b)) f''(triple(a,b,c)) -> foldf(triple(a,b,nil()),c) Qed