YES Problem: a__from(X) -> cons(mark(X),from(s(X))) a__length(nil()) -> 0() a__length(cons(X,Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) mark(nil()) -> nil() mark(0()) -> 0() a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Proof: DP Processor: DPs: a__from#(X) -> mark#(X) a__length#(cons(X,Y)) -> a__length1#(Y) a__length1#(X) -> a__length#(X) mark#(from(X)) -> mark#(X) mark#(from(X)) -> a__from#(mark(X)) mark#(length(X)) -> a__length#(X) mark#(length1(X)) -> a__length1#(X) mark#(cons(X1,X2)) -> mark#(X1) mark#(s(X)) -> mark#(X) TRS: a__from(X) -> cons(mark(X),from(s(X))) a__length(nil()) -> 0() a__length(cons(X,Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) mark(nil()) -> nil() mark(0()) -> 0() a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Matrix Interpretation Processor: dim=2 usable rules: a__from(X) -> cons(mark(X),from(s(X))) a__length(nil()) -> 0() a__length(cons(X,Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) mark(nil()) -> nil() mark(0()) -> 0() a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) interpretation: [a__length1#](x0) = [0 1]x0 + [1], [a__length#](x0) = [0 1]x0, [mark#](x0) = [2 0]x0, [a__from#](x0) = [2 0]x0 + [1], [0 2] [2] [length1](x0) = [0 0]x0 + [1], [0 2] [2] [length](x0) = [0 0]x0 + [2], [0 2] [3] [a__length1](x0) = [0 0]x0 + [3], [0] [0] = [2], [0 2] [2] [a__length](x0) = [0 0]x0 + [3], [0] [nil] = [0], [1 0] [0 0] [2] [cons](x0, x1) = [0 0]x0 + [0 1]x1 + [2], [2 0] [1] [from](x0) = [0 1]x0 + [1], [1] [s](x0) = x0 + [0], [2 0] [0] [mark](x0) = [2 1]x0 + [1], [2 0] [2] [a__from](x0) = [0 1]x0 + [3] orientation: a__from#(X) = [2 0]X + [1] >= [2 0]X = mark#(X) a__length#(cons(X,Y)) = [0 1]Y + [2] >= [0 1]Y + [1] = a__length1#(Y) a__length1#(X) = [0 1]X + [1] >= [0 1]X = a__length#(X) mark#(from(X)) = [4 0]X + [2] >= [2 0]X = mark#(X) mark#(from(X)) = [4 0]X + [2] >= [4 0]X + [1] = a__from#(mark(X)) mark#(length(X)) = [0 4]X + [4] >= [0 1]X = a__length#(X) mark#(length1(X)) = [0 4]X + [4] >= [0 1]X + [1] = a__length1#(X) mark#(cons(X1,X2)) = [2 0]X1 + [4] >= [2 0]X1 = mark#(X1) mark#(s(X)) = [2 0]X + [2] >= [2 0]X = mark#(X) [2 0] [2] [2 0] [2] a__from(X) = [0 1]X + [3] >= [0 1]X + [3] = cons(mark(X),from(s(X))) [2] [0] a__length(nil()) = [3] >= [2] = 0() [0 2] [6] [0 2] [4] a__length(cons(X,Y)) = [0 0]Y + [3] >= [0 0]Y + [3] = s(a__length1(Y)) [0 2] [3] [0 2] [2] a__length1(X) = [0 0]X + [3] >= [0 0]X + [3] = a__length(X) [4 0] [2] [4 0] [2] mark(from(X)) = [4 1]X + [4] >= [2 1]X + [4] = a__from(mark(X)) [0 4] [4] [0 2] [2] mark(length(X)) = [0 4]X + [7] >= [0 0]X + [3] = a__length(X) [0 4] [4] [0 2] [3] mark(length1(X)) = [0 4]X + [6] >= [0 0]X + [3] = a__length1(X) [2 0] [0 0] [4] [2 0] [0 0] [2] mark(cons(X1,X2)) = [2 0]X1 + [0 1]X2 + [7] >= [0 0]X1 + [0 1]X2 + [2] = cons(mark(X1),X2) [2 0] [2] [2 0] [1] mark(s(X)) = [2 1]X + [3] >= [2 1]X + [1] = s(mark(X)) [0] [0] mark(nil()) = [1] >= [0] = nil() [0] [0] mark(0()) = [3] >= [2] = 0() [2 0] [2] [2 0] [1] a__from(X) = [0 1]X + [3] >= [0 1]X + [1] = from(X) [0 2] [2] [0 2] [2] a__length(X) = [0 0]X + [3] >= [0 0]X + [2] = length(X) [0 2] [3] [0 2] [2] a__length1(X) = [0 0]X + [3] >= [0 0]X + [1] = length1(X) problem: DPs: TRS: a__from(X) -> cons(mark(X),from(s(X))) a__length(nil()) -> 0() a__length(cons(X,Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(s(X)) -> s(mark(X)) mark(nil()) -> nil() mark(0()) -> 0() a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Qed