YES TRS: { a__f(X1, X2, X3) -> f(X1, X2, X3), a__f(a(), X, X) -> a__f(X, a__b(), b()), a__b() -> b(), a__b() -> a(), mark(b()) -> a__b(), mark(a()) -> a(), mark(f(X1, X2, X3)) -> a__f(X1, mark(X2), X3)} DP: Strict: { a__f#(a(), X, X) -> a__f#(X, a__b(), b()), a__f#(a(), X, X) -> a__b#(), mark#(b()) -> a__b#(), mark#(f(X1, X2, X3)) -> a__f#(X1, mark(X2), X3), mark#(f(X1, X2, X3)) -> mark#(X2)} Weak: { a__f(X1, X2, X3) -> f(X1, X2, X3), a__f(a(), X, X) -> a__f(X, a__b(), b()), a__b() -> b(), a__b() -> a(), mark(b()) -> a__b(), mark(a()) -> a(), mark(f(X1, X2, X3)) -> a__f(X1, mark(X2), X3)} EDG: {(mark#(f(X1, X2, X3)) -> a__f#(X1, mark(X2), X3), a__f#(a(), X, X) -> a__b#()) (mark#(f(X1, X2, X3)) -> a__f#(X1, mark(X2), X3), a__f#(a(), X, X) -> a__f#(X, a__b(), b())) (a__f#(a(), X, X) -> a__f#(X, a__b(), b()), a__f#(a(), X, X) -> a__f#(X, a__b(), b())) (a__f#(a(), X, X) -> a__f#(X, a__b(), b()), a__f#(a(), X, X) -> a__b#()) (mark#(f(X1, X2, X3)) -> mark#(X2), mark#(b()) -> a__b#()) (mark#(f(X1, X2, X3)) -> mark#(X2), mark#(f(X1, X2, X3)) -> a__f#(X1, mark(X2), X3)) (mark#(f(X1, X2, X3)) -> mark#(X2), mark#(f(X1, X2, X3)) -> mark#(X2))} SCCS: Scc: {mark#(f(X1, X2, X3)) -> mark#(X2)} Scc: {a__f#(a(), X, X) -> a__f#(X, a__b(), b())} SCC: Strict: {mark#(f(X1, X2, X3)) -> mark#(X2)} Weak: { a__f(X1, X2, X3) -> f(X1, X2, X3), a__f(a(), X, X) -> a__f(X, a__b(), b()), a__b() -> b(), a__b() -> a(), mark(b()) -> a__b(), mark(a()) -> a(), mark(f(X1, X2, X3)) -> a__f(X1, mark(X2), X3)} SPSC: Simple Projection: pi(mark#) = 0 Strict: {} Qed SCC: Strict: {a__f#(a(), X, X) -> a__f#(X, a__b(), b())} Weak: { a__f(X1, X2, X3) -> f(X1, X2, X3), a__f(a(), X, X) -> a__f(X, a__b(), b()), a__b() -> b(), a__b() -> a(), mark(b()) -> a__b(), mark(a()) -> a(), mark(f(X1, X2, X3)) -> a__f(X1, mark(X2), X3)} POLY: Argument Filtering: pi(f) = [], pi(mark) = [], pi(a) = [], pi(b) = [], pi(a__b) = [], pi(a__f#) = [0,2], pi(a__f) = [] Usable Rules: {} Interpretation: [a__f#](x0, x1) = x0 + x1, [a] = 1, [b] = 0 Strict: {} Weak: { a__f(X1, X2, X3) -> f(X1, X2, X3), a__f(a(), X, X) -> a__f(X, a__b(), b()), a__b() -> b(), a__b() -> a(), mark(b()) -> a__b(), mark(a()) -> a(), mark(f(X1, X2, X3)) -> a__f(X1, mark(X2), X3)} Qed