YES O(n^2) TRS: { norm(nil()) -> 0(), norm(g(x, y)) -> s(norm(x)), f(x, nil()) -> g(nil(), x), f(x, g(y, z)) -> g(f(x, y), z), rem(nil(), y) -> nil(), rem(g(x, y), 0()) -> g(x, y), rem(g(x, y), s(z)) -> rem(x, z) } Natural interpretation: Strict: { norm(nil()) -> 0(), norm(g(x, y)) -> s(norm(x)), f(x, nil()) -> g(nil(), x), f(x, g(y, z)) -> g(f(x, y), z), rem(nil(), y) -> nil(), rem(g(x, y), 0()) -> g(x, y), rem(g(x, y), s(z)) -> rem(x, z) } Weak: {} Interpretation class: deltarestricted [rem](delta, X1, X0) = + 1*X0 + 1*X1 + 0 + 1*X0*delta + 0*X1*delta + 1*delta [f](delta, X1, X0) = + 1*X0 + 0*X1 + 1 + 1*X0*delta + 1*X1*delta + 1*delta [g](delta, X1, X0) = + 0*X0 + 1*X1 + 1 + 1*X0*delta + 0*X1*delta + 0*delta [s](delta, X0) = + 1*X0 + 1 + 0*X0*delta + 0*delta [nil](delta) = + 0 + 0*delta [norm](delta, X0) = + 1*X0 + 0 + 1*X0*delta + 1*delta [0](delta) = + 0 + 0*delta rem_tau_1(delta) = delta/(1 + 0 * delta)rem_tau_2(delta) = delta/(1 + 1 * delta) f_tau_1(delta) = delta/(0 + 1 * delta)f_tau_2(delta) = delta/(1 + 1 * delta) g_tau_1(delta) = delta/(1 + 0 * delta)g_tau_2(delta) = delta/(0 + 1 * delta) s_tau_1(delta) = delta/(1 + 0 * delta) norm_tau_1(delta) = delta/(1 + 1 * delta) Qed