(VAR X X1 X2 ) (RULES active(h(X)) -> mark(g(X, X)) active(g(a, X)) -> mark(f(b, X)) active(f(X, X)) -> mark(h(a)) active(a) -> mark(b) mark(h(X)) -> active(h(mark(X))) mark(g(X1, X2)) -> active(g(mark(X1), X2)) mark(a) -> active(a) mark(f(X1, X2)) -> active(f(mark(X1), X2)) mark(b) -> active(b) h(mark(X)) -> h(X) h(active(X)) -> h(X) g(mark(X1), X2) -> g(X1, X2) g(X1, mark(X2)) -> g(X1, X2) g(active(X1), X2) -> g(X1, X2) g(X1, active(X2)) -> g(X1, X2) f(mark(X1), X2) -> f(X1, X2) f(X1, mark(X2)) -> f(X1, X2) f(active(X1), X2) -> f(X1, X2) f(X1, active(X2)) -> f(X1, X2) )