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) TDG 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) graph: a__length1#(X) -> a__length#(X) -> a__length#(cons(X,Y)) -> a__length1#(Y) a__length#(cons(X,Y)) -> a__length1#(Y) -> a__length1#(X) -> a__length#(X) mark#(length1(X)) -> a__length1#(X) -> a__length1#(X) -> a__length#(X) mark#(length(X)) -> a__length#(X) -> a__length#(cons(X,Y)) -> a__length1#(Y) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(s(X)) -> mark#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(length1(X)) -> a__length1#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(length(X)) -> a__length#(X) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(from(X)) -> a__from#(mark(X)) mark#(cons(X1,X2)) -> mark#(X1) -> mark#(from(X)) -> mark#(X) mark#(from(X)) -> mark#(X) -> mark#(s(X)) -> mark#(X) mark#(from(X)) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(from(X)) -> mark#(X) -> mark#(length1(X)) -> a__length1#(X) mark#(from(X)) -> mark#(X) -> mark#(length(X)) -> a__length#(X) mark#(from(X)) -> mark#(X) -> mark#(from(X)) -> a__from#(mark(X)) mark#(from(X)) -> mark#(X) -> mark#(from(X)) -> mark#(X) mark#(from(X)) -> a__from#(mark(X)) -> a__from#(X) -> mark#(X) mark#(s(X)) -> mark#(X) -> mark#(s(X)) -> mark#(X) mark#(s(X)) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) mark#(s(X)) -> mark#(X) -> mark#(length1(X)) -> a__length1#(X) mark#(s(X)) -> mark#(X) -> mark#(length(X)) -> a__length#(X) mark#(s(X)) -> mark#(X) -> mark#(from(X)) -> a__from#(mark(X)) mark#(s(X)) -> mark#(X) -> mark#(from(X)) -> mark#(X) a__from#(X) -> mark#(X) -> mark#(s(X)) -> mark#(X) a__from#(X) -> mark#(X) -> mark#(cons(X1,X2)) -> mark#(X1) a__from#(X) -> mark#(X) -> mark#(length1(X)) -> a__length1#(X) a__from#(X) -> mark#(X) -> mark#(length(X)) -> a__length#(X) a__from#(X) -> mark#(X) -> mark#(from(X)) -> a__from#(mark(X)) a__from#(X) -> mark#(X) -> mark#(from(X)) -> mark#(X) SCC Processor: #sccs: 2 #rules: 7 #arcs: 29/81 DPs: mark#(cons(X1,X2)) -> mark#(X1) mark#(from(X)) -> mark#(X) mark#(from(X)) -> a__from#(mark(X)) a__from#(X) -> mark#(X) 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=3 interpretation: [mark#](x0) = [1 1 0]x0, [a__from#](x0) = [1 1 0]x0 + [1], [0 0 0] [0] [length1](x0) = [0 1 1]x0 + [1] [0 0 0] [0], [0 0 0] [0] [length](x0) = [0 1 1]x0 + [1] [0 0 0] [0], [0 0 0] [0] [a__length1](x0) = [0 1 1]x0 + [1] [0 0 0] [0], [0] [0] = [0] [0], [0 0 0] [0] [a__length](x0) = [0 1 1]x0 + [1] [0 0 0] [0], [0] [nil] = [0] [0], [1 1 0] [0 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + [0 0 1]x1 + [1] [0 0 0] [0 1 0] [0], [1 1 0] [1] [from](x0) = [0 0 0]x0 + [1] [0 0 0] [0], [1 0 0] [0] [s](x0) = [0 1 0]x0 + [1] [0 0 0] [0], [0] [mark](x0) = x0 + [0] [1], [1 1 0] [1] [a__from](x0) = [0 0 0]x0 + [1] [0 0 0] [1] orientation: mark#(cons(X1,X2)) = [1 1 0]X1 + [0 0 1]X2 + [1] >= [1 1 0]X1 = mark#(X1) mark#(from(X)) = [1 1 0]X + [2] >= [1 1 0]X = mark#(X) mark#(from(X)) = [1 1 0]X + [2] >= [1 1 0]X + [1] = a__from#(mark(X)) a__from#(X) = [1 1 0]X + [1] >= [1 1 0]X = mark#(X) mark#(s(X)) = [1 1 0]X + [1] >= [1 1 0]X = mark#(X) [1 1 0] [1] [1 1 0] [0] a__from(X) = [0 0 0]X + [1] >= [0 0 0]X + [1] = cons(mark(X),from(s(X))) [0 0 0] [1] [0 0 0] [1] [0] [0] a__length(nil()) = [1] >= [0] = 0() [0] [0] [0 0 0] [0] [0 0 0] [0] a__length(cons(X,Y)) = [0 1 1]Y + [2] >= [0 1 1]Y + [2] = s(a__length1(Y)) [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] a__length1(X) = [0 1 1]X + [1] >= [0 1 1]X + [1] = a__length(X) [0 0 0] [0] [0 0 0] [0] [1 1 0] [1] [1 1 0] [1] mark(from(X)) = [0 0 0]X + [1] >= [0 0 0]X + [1] = a__from(mark(X)) [0 0 0] [1] [0 0 0] [1] [0 0 0] [0] [0 0 0] [0] mark(length(X)) = [0 1 1]X + [1] >= [0 1 1]X + [1] = a__length(X) [0 0 0] [1] [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] mark(length1(X)) = [0 1 1]X + [1] >= [0 1 1]X + [1] = a__length1(X) [0 0 0] [1] [0 0 0] [0] [1 1 0] [0 0 0] [0] [1 1 0] [0 0 0] [0] mark(cons(X1,X2)) = [0 0 0]X1 + [0 0 1]X2 + [1] >= [0 0 0]X1 + [0 0 1]X2 + [1] = cons(mark(X1),X2) [0 0 0] [0 1 0] [1] [0 0 0] [0 1 0] [0] [1 0 0] [0] [1 0 0] [0] mark(s(X)) = [0 1 0]X + [1] >= [0 1 0]X + [1] = s(mark(X)) [0 0 0] [1] [0 0 0] [0] [0] [0] mark(nil()) = [0] >= [0] = nil() [1] [0] [0] [0] mark(0()) = [0] >= [0] = 0() [1] [0] [1 1 0] [1] [1 1 0] [1] a__from(X) = [0 0 0]X + [1] >= [0 0 0]X + [1] = from(X) [0 0 0] [1] [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] a__length(X) = [0 1 1]X + [1] >= [0 1 1]X + [1] = length(X) [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] [0 0 0] [0] a__length1(X) = [0 1 1]X + [1] >= [0 1 1]X + [1] = length1(X) [0 0 0] [0] [0 0 0] [0] 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 DPs: a__length1#(X) -> a__length#(X) a__length#(cons(X,Y)) -> a__length1#(Y) 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) Arctic Interpretation Processor: dimension: 1 interpretation: [a__length1#](x0) = 1x0, [a__length#](x0) = x0, [length1](x0) = 2, [length](x0) = 0, [a__length1](x0) = 4, [0] = 0, [a__length](x0) = 1, [nil] = 2, [cons](x0, x1) = 2x1 + 0, [from](x0) = 3, [s](x0) = 0, [mark](x0) = 4x0 + 0, [a__from](x0) = 6 orientation: a__length1#(X) = 1X >= X = a__length#(X) a__length#(cons(X,Y)) = 2Y + 0 >= 1Y = a__length1#(Y) a__from(X) = 6 >= 5 = cons(mark(X),from(s(X))) a__length(nil()) = 1 >= 0 = 0() a__length(cons(X,Y)) = 1 >= 0 = s(a__length1(Y)) a__length1(X) = 4 >= 1 = a__length(X) mark(from(X)) = 7 >= 6 = a__from(mark(X)) mark(length(X)) = 4 >= 1 = a__length(X) mark(length1(X)) = 6 >= 4 = a__length1(X) mark(cons(X1,X2)) = 6X2 + 4 >= 2X2 + 0 = cons(mark(X1),X2) mark(s(X)) = 4 >= 0 = s(mark(X)) mark(nil()) = 6 >= 2 = nil() mark(0()) = 4 >= 0 = 0() a__from(X) = 6 >= 3 = from(X) a__length(X) = 1 >= 0 = length(X) a__length1(X) = 4 >= 2 = 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