YES Problem: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Proof: DP Processor: DPs: a__f#(s(0())) -> a__p#(s(0())) a__f#(s(0())) -> a__f#(a__p(s(0()))) mark#(f(X)) -> mark#(X) mark#(f(X)) -> a__f#(mark(X)) mark#(p(X)) -> mark#(X) mark#(p(X)) -> a__p#(mark(X)) mark#(cons(X1,X2)) -> mark#(X1) mark#(s(X)) -> mark#(X) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) EDG Processor: DPs: a__f#(s(0())) -> a__p#(s(0())) a__f#(s(0())) -> a__f#(a__p(s(0()))) mark#(f(X)) -> mark#(X) mark#(f(X)) -> a__f#(mark(X)) mark#(p(X)) -> mark#(X) mark#(p(X)) -> a__p#(mark(X)) mark#(cons(X1,X2)) -> mark#(X1) mark#(s(X)) -> mark#(X) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) graph: mark#(p(X)) -> mark#(X) -> mark#(f(X)) -> mark#(X) mark#(p(X)) -> mark#(X) -> mark#(f(X)) -> a__f#(mark(X)) mark#(p(X)) -> mark#(X) -> mark#(p(X)) -> mark#(X) mark#(p(X)) -> mark#(X) -> mark#(p(X)) -> a__p#(mark(X)) mark#(p(X)) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(p(X)) -> mark#(X) -> mark#(s(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(f(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(f(X)) -> a__f#(mark(X)) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(p(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(p(X)) -> a__p#(mark(X)) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(s(X)) -> mark#(X) mark#(f(X)) -> mark#(X) -> mark#(f(X)) -> mark#(X) mark#(f(X)) -> mark#(X) -> mark#(f(X)) -> a__f#(mark(X)) mark#(f(X)) -> mark#(X) -> mark#(p(X)) -> mark#(X) mark#(f(X)) -> mark#(X) -> mark#(p(X)) -> a__p#(mark(X)) mark#(f(X)) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(f(X)) -> mark#(X) -> mark#(s(X)) -> mark#(X) mark#(f(X)) -> a__f#(mark(X)) -> a__f#(s(0())) -> a__p#(s(0())) mark#(f(X)) -> a__f#(mark(X)) -> a__f#(s(0())) -> a__f#(a__p(s(0()))) mark#(s(X)) -> mark#(X) -> mark#(f(X)) -> mark#(X) mark#(s(X)) -> mark#(X) -> mark#(f(X)) -> a__f#(mark(X)) mark#(s(X)) -> mark#(X) -> mark#(p(X)) -> mark#(X) mark#(s(X)) -> mark#(X) -> mark#(p(X)) -> a__p#(mark(X)) mark#(s(X)) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(s(X)) -> mark#(X) -> mark#(s(X)) -> mark#(X) a__f#(s(0())) -> a__f#(a__p(s(0()))) -> a__f#(s(0())) -> a__p#(s(0())) a__f#(s(0())) -> a__f#(a__p(s(0()))) -> a__f#(s(0())) -> a__f#(a__p(s(0()))) SCC Processor: #sccs: 2 #rules: 5 #arcs: 28/64 DPs: mark#(p(X)) -> mark#(X) mark#(s(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) mark#(f(X)) -> mark#(X) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0, [p](x0) = x0, [mark](x0) = x0, [a__p](x0) = x0, [cons](x0, x1) = x0 + x1, [f](x0) = x0 + 1, [s](x0) = x0, [a__f](x0) = x0 + 1, [0] = 0 orientation: mark#(p(X)) = X >= X = mark#(X) mark#(s(X)) = X >= X = mark#(X) mark#(cons(X1,X2)) = X1 + X2 >= X1 = mark#(X1) mark#(f(X)) = X + 1 >= X = mark#(X) a__f(0()) = 1 >= 1 = cons(0(),f(s(0()))) a__f(s(0())) = 1 >= 1 = a__f(a__p(s(0()))) a__p(s(0())) = 0 >= 0 = 0() mark(f(X)) = X + 1 >= X + 1 = a__f(mark(X)) mark(p(X)) = X >= X = a__p(mark(X)) mark(0()) = 0 >= 0 = 0() mark(cons(X1,X2)) = X1 + X2 >= X1 + X2 = cons(mark(X1),X2) mark(s(X)) = X >= X = s(mark(X)) a__f(X) = X + 1 >= X + 1 = f(X) a__p(X) = X >= X = p(X) problem: DPs: mark#(p(X)) -> mark#(X) mark#(s(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0, [p](x0) = x0, [mark](x0) = x0, [a__p](x0) = x0, [cons](x0, x1) = x0, [f](x0) = 1, [s](x0) = x0 + 1, [a__f](x0) = 1, [0] = 0 orientation: mark#(p(X)) = X >= X = mark#(X) mark#(s(X)) = X + 1 >= X = mark#(X) mark#(cons(X1,X2)) = X1 >= X1 = mark#(X1) a__f(0()) = 1 >= 0 = cons(0(),f(s(0()))) a__f(s(0())) = 1 >= 1 = a__f(a__p(s(0()))) a__p(s(0())) = 1 >= 0 = 0() mark(f(X)) = 1 >= 1 = a__f(mark(X)) mark(p(X)) = X >= X = a__p(mark(X)) mark(0()) = 0 >= 0 = 0() mark(cons(X1,X2)) = X1 >= X1 = cons(mark(X1),X2) mark(s(X)) = X + 1 >= X + 1 = s(mark(X)) a__f(X) = 1 >= 1 = f(X) a__p(X) = X >= X = p(X) problem: DPs: mark#(p(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Matrix Interpretation Processor: dimension: 1 interpretation: [mark#](x0) = x0 + 1, [p](x0) = x0 + 1, [mark](x0) = x0, [a__p](x0) = x0 + 1, [cons](x0, x1) = x0 + 1, [f](x0) = 1, [s](x0) = 0, [a__f](x0) = 1, [0] = 0 orientation: mark#(p(X)) = X + 2 >= X + 1 = mark#(X) mark#(cons(X1,X2)) = X1 + 2 >= X1 + 1 = mark#(X1) a__f(0()) = 1 >= 1 = cons(0(),f(s(0()))) a__f(s(0())) = 1 >= 1 = a__f(a__p(s(0()))) a__p(s(0())) = 1 >= 0 = 0() mark(f(X)) = 1 >= 1 = a__f(mark(X)) mark(p(X)) = X + 1 >= X + 1 = a__p(mark(X)) mark(0()) = 0 >= 0 = 0() mark(cons(X1,X2)) = X1 + 1 >= X1 + 1 = cons(mark(X1),X2) mark(s(X)) = 0 >= 0 = s(mark(X)) a__f(X) = 1 >= 1 = f(X) a__p(X) = X + 1 >= X + 1 = p(X) problem: DPs: TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Qed DPs: a__f#(s(0())) -> a__f#(a__p(s(0()))) TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Matrix Interpretation Processor: dimension: 1 interpretation: [a__f#](x0) = x0, [p](x0) = 0, [mark](x0) = x0, [a__p](x0) = 0, [cons](x0, x1) = 0, [f](x0) = 0, [s](x0) = 1, [a__f](x0) = 0, [0] = 0 orientation: a__f#(s(0())) = 1 >= 0 = a__f#(a__p(s(0()))) a__f(0()) = 0 >= 0 = cons(0(),f(s(0()))) a__f(s(0())) = 0 >= 0 = a__f(a__p(s(0()))) a__p(s(0())) = 0 >= 0 = 0() mark(f(X)) = 0 >= 0 = a__f(mark(X)) mark(p(X)) = 0 >= 0 = a__p(mark(X)) mark(0()) = 0 >= 0 = 0() mark(cons(X1,X2)) = 0 >= 0 = cons(mark(X1),X2) mark(s(X)) = 1 >= 1 = s(mark(X)) a__f(X) = 0 >= 0 = f(X) a__p(X) = 0 >= 0 = p(X) problem: DPs: TRS: a__f(0()) -> cons(0(),f(s(0()))) a__f(s(0())) -> a__f(a__p(s(0()))) a__p(s(0())) -> 0() mark(f(X)) -> a__f(mark(X)) mark(p(X)) -> a__p(mark(X)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) a__f(X) -> f(X) a__p(X) -> p(X) Qed