Term Rewriting System R: [Z, X, Y, X1, X2] a__fst(0, Z) -> nil a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) a__fst(X1, X2) -> fst(X1, X2) a__from(X) -> cons(mark(X), from(s(X))) a__from(X) -> from(X) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) a__add(X1, X2) -> add(X1, X2) a__len(nil) -> 0 a__len(cons(X, Z)) -> s(len(Z)) a__len(X) -> len(X) mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(len(X)) -> a__len(mark(X)) mark(0) -> 0 mark(s(X)) -> s(X) mark(nil) -> nil mark(cons(X1, X2)) -> cons(mark(X1), X2) Termination of R to be shown. R contains the following Dependency Pairs: MARK(len(X)) -> A__LEN(mark(X)) MARK(len(X)) -> MARK(X) MARK(cons(X1, X2)) -> MARK(X1) MARK(from(X)) -> A__FROM(mark(X)) MARK(from(X)) -> MARK(X) MARK(add(X1, X2)) -> A__ADD(mark(X1), mark(X2)) MARK(add(X1, X2)) -> MARK(X1) MARK(add(X1, X2)) -> MARK(X2) MARK(fst(X1, X2)) -> A__FST(mark(X1), mark(X2)) MARK(fst(X1, X2)) -> MARK(X1) MARK(fst(X1, X2)) -> MARK(X2) A__FST(s(X), cons(Y, Z)) -> MARK(Y) A__FROM(X) -> MARK(X) A__ADD(0, X) -> MARK(X) Furthermore, R contains one SCC. SCC1: MARK(fst(X1, X2)) -> MARK(X2) MARK(fst(X1, X2)) -> MARK(X1) A__FST(s(X), cons(Y, Z)) -> MARK(Y) MARK(fst(X1, X2)) -> A__FST(mark(X1), mark(X2)) MARK(add(X1, X2)) -> MARK(X2) MARK(add(X1, X2)) -> MARK(X1) A__ADD(0, X) -> MARK(X) MARK(add(X1, X2)) -> A__ADD(mark(X1), mark(X2)) MARK(from(X)) -> MARK(X) A__FROM(X) -> MARK(X) MARK(from(X)) -> A__FROM(mark(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(len(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) a__fst(X1, X2) -> fst(X1, X2) a__fst(0, Z) -> nil a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(len(X)) -> a__len(mark(X)) mark(nil) -> nil mark(s(X)) -> s(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) mark(0) -> 0 mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) a__len(X) -> len(X) a__len(nil) -> 0 a__len(cons(X, Z)) -> s(len(Z)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(nil) = 0 POL(add(x_1, x_2)) = x_1 + x_2 POL(A__FROM(x_1)) = x_1 POL(s(x_1)) = 0 POL(A__FST(x_1, x_2)) = x_2 POL(MARK(x_1)) = x_1 POL(mark(x_1)) = x_1 POL(a__add(x_1, x_2)) = x_1 + x_2 POL(fst(x_1, x_2)) = 1 + x_1 + x_2 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 POL(A__ADD(x_1, x_2)) = x_2 POL(a__from(x_1)) = x_1 POL(a__fst(x_1, x_2)) = 1 + x_1 + x_2 POL(from(x_1)) = x_1 POL(len(x_1)) = x_1 POL(a__len(x_1)) = x_1 resulting in one subcycle. SCC1.Polo1: MARK(add(X1, X2)) -> MARK(X2) MARK(add(X1, X2)) -> MARK(X1) A__ADD(0, X) -> MARK(X) MARK(add(X1, X2)) -> A__ADD(mark(X1), mark(X2)) MARK(from(X)) -> MARK(X) A__FROM(X) -> MARK(X) MARK(from(X)) -> A__FROM(mark(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(len(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) a__fst(X1, X2) -> fst(X1, X2) a__fst(0, Z) -> nil a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(len(X)) -> a__len(mark(X)) mark(nil) -> nil mark(s(X)) -> s(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) mark(0) -> 0 mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) a__len(X) -> len(X) a__len(nil) -> 0 a__len(cons(X, Z)) -> s(len(Z)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(nil) = 0 POL(add(x_1, x_2)) = 1 + x_1 + x_2 POL(A__FROM(x_1)) = x_1 POL(s(x_1)) = 0 POL(MARK(x_1)) = x_1 POL(mark(x_1)) = x_1 POL(a__add(x_1, x_2)) = 1 + x_1 + x_2 POL(fst(x_1, x_2)) = x_2 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 POL(A__ADD(x_1, x_2)) = x_2 POL(a__from(x_1)) = x_1 POL(a__fst(x_1, x_2)) = x_2 POL(from(x_1)) = x_1 POL(len(x_1)) = x_1 POL(a__len(x_1)) = x_1 resulting in one subcycle. SCC1.Polo1.Polo1: MARK(from(X)) -> MARK(X) A__FROM(X) -> MARK(X) MARK(from(X)) -> A__FROM(mark(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(len(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) a__fst(X1, X2) -> fst(X1, X2) a__fst(0, Z) -> nil a__fst(s(X), cons(Y, Z)) -> cons(mark(Y), fst(X, Z)) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(len(X)) -> a__len(mark(X)) mark(nil) -> nil mark(s(X)) -> s(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(from(X)) -> a__from(mark(X)) mark(0) -> 0 mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(fst(X1, X2)) -> a__fst(mark(X1), mark(X2)) a__len(X) -> len(X) a__len(nil) -> 0 a__len(cons(X, Z)) -> s(len(Z)) Used ordering: Polynomial ordering with Polynomial interpretation: POL(nil) = 0 POL(add(x_1, x_2)) = x_2 POL(A__FROM(x_1)) = x_1 POL(s(x_1)) = 0 POL(MARK(x_1)) = x_1 POL(mark(x_1)) = x_1 POL(a__add(x_1, x_2)) = x_2 POL(fst(x_1, x_2)) = x_2 POL(0) = 0 POL(cons(x_1, x_2)) = x_1 POL(a__from(x_1)) = 1 + x_1 POL(a__fst(x_1, x_2)) = x_2 POL(from(x_1)) = 1 + x_1 POL(len(x_1)) = x_1 POL(a__len(x_1)) = x_1 resulting in one subcycle. SCC1.Polo1.Polo1.Polo1: MARK(cons(X1, X2)) -> MARK(X1) MARK(len(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(MARK(x_1)) = 1 + x_1 POL(len(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(len(X)) -> MARK(X) This transformation is resulting in no new subcycles. Termination of R successfully shown. Duration: 2.664 seconds.