Term Rewriting System R: [X, Y, X1, X2] a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) a__length(nil) -> 0 a__length(cons(X, Y)) -> s(a__length1(Y)) a__length(X) -> length(X) a__length1(X) -> a__length(X) a__length1(X) -> length1(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 Termination of R to be shown. R contains the following Dependency Pairs: MARK(s(X)) -> MARK(X) MARK(length(X)) -> A__LENGTH(X) MARK(cons(X1, X2)) -> MARK(X1) MARK(from(X)) -> A__FROM(mark(X)) MARK(from(X)) -> MARK(X) MARK(length1(X)) -> A__LENGTH1(X) A__LENGTH(cons(X, Y)) -> A__LENGTH1(Y) A__LENGTH1(X) -> A__LENGTH(X) A__FROM(X) -> MARK(X) Furthermore, R contains two SCCs. SCC1: A__LENGTH1(X) -> A__LENGTH(X) A__LENGTH(cons(X, Y)) -> A__LENGTH1(Y) Removing rules from R by ordering and analyzing Dependency Pairs, Usable Rules, and Usable Equations. This is possible by using the following (C_E-compatible) Polynomial ordering. Polynomial interpretation: POL(A__LENGTH1(x_1)) = x_1 POL(A__LENGTH(x_1)) = x_1 POL(cons(x_1, x_2)) = x_1 + x_2 The following Dependency Pairs can be deleted: A__LENGTH(cons(X, Y)) -> A__LENGTH1(Y) This transformation is resulting in no new subcycles. SCC2: MARK(from(X)) -> MARK(X) A__FROM(X) -> MARK(X) MARK(from(X)) -> A__FROM(mark(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(s(X)) -> MARK(X) By using a polynomial ordering, at least one Dependency Pair of this SCC can be strictly oriented. Additionally, the following rules can be oriented: a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) mark(s(X)) -> s(mark(X)) mark(length(X)) -> a__length(X) mark(nil) -> nil mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) mark(0) -> 0 mark(length1(X)) -> a__length1(X) a__length1(X) -> length1(X) a__length1(X) -> a__length(X) a__length(X) -> length(X) a__length(nil) -> 0 a__length(cons(X, Y)) -> s(a__length1(Y)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(nil) = 0 POL(s(x_1)) = x_1 POL(length(x_1)) = 0 POL(A__FROM(x_1)) = x_1 POL(mark(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(a__length(x_1)) = 0 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 POL(length1(x_1)) = 0 POL(a__length1(x_1)) = 0 POL(a__from(x_1)) = 1 + x_1 POL(from(x_1)) = 1 + x_1 resulting in one subcycle. SCC2.Polo1: MARK(cons(X1, X2)) -> MARK(X1) MARK(s(X)) -> MARK(X) Removing rules from R by ordering and analyzing Dependency Pairs, Usable Rules, and Usable Equations. This is possible by using the following (C_E-compatible) Polynomial ordering. Polynomial interpretation: POL(s(x_1)) = 1 + x_1 POL(MARK(x_1)) = 1 + x_1 POL(cons(x_1, x_2)) = 1 + x_1 + x_2 The following Dependency Pairs can be deleted: MARK(cons(X1, X2)) -> MARK(X1) MARK(s(X)) -> MARK(X) This transformation is resulting in no new subcycles. Termination of R successfully shown. Duration: 0.863 seconds.