YES O(n^3) TRS: { active(f(x)) -> mark(x), active(f(x)) -> f(active(x)), f(mark(x)) -> mark(f(x)), f(ok(x)) -> ok(f(x)), f(found(x)) -> found(f(x)), top(mark(x)) -> top(check(x)), top(active(c())) -> top(mark(c())), top(found(x)) -> top(active(x)), check(x) -> start(match(f(X()), x)), check(f(x)) -> f(check(x)), start(ok(x)) -> found(x), match(f(x), f(y)) -> f(match(x, y)), match(X(), x) -> proper(x), proper(f(x)) -> f(proper(x)), proper(c()) -> ok(c()) } DUP: We consider a non-duplicating system. Trs: { active(f(x)) -> mark(x), active(f(x)) -> f(active(x)), f(mark(x)) -> mark(f(x)), f(ok(x)) -> ok(f(x)), f(found(x)) -> found(f(x)), top(mark(x)) -> top(check(x)), top(active(c())) -> top(mark(c())), top(found(x)) -> top(active(x)), check(x) -> start(match(f(X()), x)), check(f(x)) -> f(check(x)), start(ok(x)) -> found(x), match(f(x), f(y)) -> f(match(x, y)), match(X(), x) -> proper(x), proper(f(x)) -> f(proper(x)), proper(c()) -> ok(c()) } Matrix Interpretation: Interpretation class: triangular [X2] [1 1 3][X2] [0] [found]([X1]) = [0 1 0][X1] + [1] [X0] [0 0 0][X0] [0] [X2] [1 1 0][X2] [1] [ok]([X1]) = [0 1 0][X1] + [1] [X0] [0 0 1][X0] [0] [X2] [1 2 0][X2] [1] [proper]([X1]) = [0 1 0][X1] + [1] [X0] [0 0 0][X0] [3] [1] [X] = [0] [3] [X5] [X2] [1 0 0][X5] [1 2 0][X2] [1] [match]([X4], [X1]) = [0 0 0][X4] + [0 1 0][X1] + [1] [X3] [X0] [0 0 1][X3] [0 0 0][X0] [0] [X2] [1 0 3][X2] [0] [start]([X1]) = [0 1 2][X1] + [0] [X0] [0 0 0][X0] [0] [X2] [1 2 0][X2] [3] [check]([X1]) = [0 1 0][X1] + [1] [X0] [0 0 0][X0] [0] [0] [c] = [1] [3] [X2] [1 3 3][X2] [0] [top]([X1]) = [0 0 0][X1] + [0] [X0] [0 0 0][X0] [0] [X2] [1 3 0][X2] [0] [f]([X1]) = [0 1 0][X1] + [2] [X0] [0 0 0][X0] [0] [X2] [1 1 0][X2] [0] [active]([X1]) = [0 1 0][X1] + [0] [X0] [0 0 1][X0] [0] [X2] [1 2 0][X2] [1] [mark]([X1]) = [0 1 0][X1] + [2] [X0] [0 0 0][X0] [0] Qed