YES 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) linear polynomial interpretations on N: g_A(x1) = x1 g#_A(x1) = 2 A_A = 1 A#_A = 1 B_A = 3 B#_A = 3 C_A = 3 C#_A = 4 foldf_A(x1,x2) = x1 + x2 + 1 foldf#_A(x1,x2) = x1 + x2 + 5 nil_A = 1 nil#_A = 0 cons_A(x1,x2) = x1 + x2 + 7 cons#_A(x1,x2) = 4 f_A(x1,x2) = x1 + x2 + 7 f#_A(x1,x2) = x1 + x2 + 10 f'_A(x1,x2) = x1 + x2 + 7 f'#_A(x1,x2) = x1 + x2 + 9 triple_A(x1,x2,x3) = x2 + x3 triple#_A(x1,x2,x3) = 5 f''_A(x1) = x1 + 2 f''#_A(x1) = x1 + 7 precedence: C > B > g > A = cons > f' > f'' > triple > foldf = nil > f