MAYBE Problem: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Proof: DP Processor: DPs: active#(f(X,X)) -> f#(a(),b()) active#(f(X,X)) -> mark#(f(a(),b())) active#(b()) -> mark#(a()) mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> f#(mark(X1),X2) mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) mark#(a()) -> active#(a()) mark#(b()) -> active#(b()) 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) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) EDG Processor: DPs: active#(f(X,X)) -> f#(a(),b()) active#(f(X,X)) -> mark#(f(a(),b())) active#(b()) -> mark#(a()) mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> f#(mark(X1),X2) mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) mark#(a()) -> active#(a()) mark#(b()) -> active#(b()) 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) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) graph: mark#(b()) -> active#(b()) -> active#(b()) -> mark#(a()) mark#(f(X1,X2)) -> mark#(X1) -> mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> mark#(X1) -> mark#(f(X1,X2)) -> f#(mark(X1),X2) mark#(f(X1,X2)) -> mark#(X1) -> mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) mark#(f(X1,X2)) -> mark#(X1) -> mark#(a()) -> active#(a()) mark#(f(X1,X2)) -> mark#(X1) -> mark#(b()) -> active#(b()) mark#(f(X1,X2)) -> f#(mark(X1),X2) -> f#(mark(X1),X2) -> f#(X1,X2) mark#(f(X1,X2)) -> f#(mark(X1),X2) -> f#(active(X1),X2) -> f#(X1,X2) mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) -> active#(f(X,X)) -> f#(a(),b()) mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) -> active#(f(X,X)) -> mark#(f(a(),b())) f#(mark(X1),X2) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2) f#(mark(X1),X2) -> f#(X1,X2) -> f#(X1,mark(X2)) -> f#(X1,X2) f#(mark(X1),X2) -> f#(X1,X2) -> f#(active(X1),X2) -> f#(X1,X2) f#(mark(X1),X2) -> f#(X1,X2) -> f#(X1,active(X2)) -> f#(X1,X2) f#(active(X1),X2) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2) f#(active(X1),X2) -> f#(X1,X2) -> f#(X1,mark(X2)) -> f#(X1,X2) f#(active(X1),X2) -> f#(X1,X2) -> f#(active(X1),X2) -> f#(X1,X2) f#(active(X1),X2) -> f#(X1,X2) -> f#(X1,active(X2)) -> f#(X1,X2) f#(X1,mark(X2)) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2) f#(X1,mark(X2)) -> f#(X1,X2) -> f#(X1,mark(X2)) -> f#(X1,X2) f#(X1,mark(X2)) -> f#(X1,X2) -> f#(active(X1),X2) -> f#(X1,X2) f#(X1,mark(X2)) -> f#(X1,X2) -> f#(X1,active(X2)) -> f#(X1,X2) f#(X1,active(X2)) -> f#(X1,X2) -> f#(mark(X1),X2) -> f#(X1,X2) f#(X1,active(X2)) -> f#(X1,X2) -> f#(X1,mark(X2)) -> f#(X1,X2) f#(X1,active(X2)) -> f#(X1,X2) -> f#(active(X1),X2) -> f#(X1,X2) f#(X1,active(X2)) -> f#(X1,X2) -> f#(X1,active(X2)) -> f#(X1,X2) active#(b()) -> mark#(a()) -> mark#(a()) -> active#(a()) active#(f(X,X)) -> mark#(f(a(),b())) -> mark#(f(X1,X2)) -> mark#(X1) active#(f(X,X)) -> mark#(f(a(),b())) -> mark#(f(X1,X2)) -> f#(mark(X1),X2) active#(f(X,X)) -> mark#(f(a(),b())) -> mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) SCC Processor: #sccs: 2 #rules: 7 #arcs: 30/144 DPs: mark#(f(X1,X2)) -> mark#(X1) mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) active#(f(X,X)) -> mark#(f(a(),b())) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0, [active#](x0) = 1, [mark](x0) = x0, [b] = 0, [a] = 0, [active](x0) = x0, [f](x0, x1) = x0 + 1 orientation: mark#(f(X1,X2)) = X1 + 1 >= X1 = mark#(X1) mark#(f(X1,X2)) = X1 + 1 >= 1 = active#(f(mark(X1),X2)) active#(f(X,X)) = 1 >= 1 = mark#(f(a(),b())) active(f(X,X)) = X + 1 >= 1 = mark(f(a(),b())) active(b()) = 0 >= 0 = mark(a()) mark(f(X1,X2)) = X1 + 1 >= X1 + 1 = active(f(mark(X1),X2)) mark(a()) = 0 >= 0 = active(a()) mark(b()) = 0 >= 0 = active(b()) f(mark(X1),X2) = X1 + 1 >= X1 + 1 = f(X1,X2) f(X1,mark(X2)) = X1 + 1 >= X1 + 1 = f(X1,X2) f(active(X1),X2) = X1 + 1 >= X1 + 1 = f(X1,X2) f(X1,active(X2)) = X1 + 1 >= X1 + 1 = f(X1,X2) problem: DPs: mark#(f(X1,X2)) -> active#(f(mark(X1),X2)) active#(f(X,X)) -> mark#(f(a(),b())) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Open DPs: f#(active(X1),X2) -> f#(X1,X2) f#(X1,active(X2)) -> f#(X1,X2) f#(X1,mark(X2)) -> f#(X1,X2) f#(mark(X1),X2) -> f#(X1,X2) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Matrix Interpretation Processor: dimension: 1 interpretation: [f#](x0, x1) = x1, [mark](x0) = x0 + 1, [b] = 0, [a] = 0, [active](x0) = x0 + 1, [f](x0, x1) = x1 orientation: f#(active(X1),X2) = X2 >= X2 = f#(X1,X2) f#(X1,active(X2)) = X2 + 1 >= X2 = f#(X1,X2) f#(X1,mark(X2)) = X2 + 1 >= X2 = f#(X1,X2) f#(mark(X1),X2) = X2 >= X2 = f#(X1,X2) active(f(X,X)) = X + 1 >= 1 = mark(f(a(),b())) active(b()) = 1 >= 1 = mark(a()) mark(f(X1,X2)) = X2 + 1 >= X2 + 1 = active(f(mark(X1),X2)) mark(a()) = 1 >= 1 = active(a()) mark(b()) = 1 >= 1 = active(b()) f(mark(X1),X2) = X2 >= X2 = f(X1,X2) f(X1,mark(X2)) = X2 + 1 >= X2 = f(X1,X2) f(active(X1),X2) = X2 >= X2 = f(X1,X2) f(X1,active(X2)) = X2 + 1 >= X2 = f(X1,X2) problem: DPs: f#(active(X1),X2) -> f#(X1,X2) f#(mark(X1),X2) -> f#(X1,X2) TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Matrix Interpretation Processor: dimension: 1 interpretation: [f#](x0, x1) = x0 + 1, [mark](x0) = x0 + 1, [b] = 0, [a] = 0, [active](x0) = x0 + 1, [f](x0, x1) = 1 orientation: f#(active(X1),X2) = X1 + 2 >= X1 + 1 = f#(X1,X2) f#(mark(X1),X2) = X1 + 2 >= X1 + 1 = f#(X1,X2) active(f(X,X)) = 2 >= 2 = mark(f(a(),b())) active(b()) = 1 >= 1 = mark(a()) mark(f(X1,X2)) = 2 >= 2 = active(f(mark(X1),X2)) mark(a()) = 1 >= 1 = active(a()) mark(b()) = 1 >= 1 = active(b()) f(mark(X1),X2) = 1 >= 1 = f(X1,X2) f(X1,mark(X2)) = 1 >= 1 = f(X1,X2) f(active(X1),X2) = 1 >= 1 = f(X1,X2) f(X1,active(X2)) = 1 >= 1 = f(X1,X2) problem: DPs: TRS: active(f(X,X)) -> mark(f(a(),b())) active(b()) -> mark(a()) mark(f(X1,X2)) -> active(f(mark(X1),X2)) mark(a()) -> active(a()) mark(b()) -> active(b()) 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) Qed