Term Rewriting System R: [N, X, Y, X1, X2, Z] a__terms(N) -> cons(recip(a__sqr(mark(N))), terms(s(N))) a__terms(X) -> terms(X) a__sqr(0) -> 0 a__sqr(s(X)) -> s(add(sqr(X), dbl(X))) a__sqr(X) -> sqr(X) a__dbl(0) -> 0 a__dbl(s(X)) -> s(s(dbl(X))) a__dbl(X) -> dbl(X) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) a__add(X1, X2) -> add(X1, X2) a__first(0, X) -> nil a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) a__first(X1, X2) -> first(X1, X2) mark(terms(X)) -> a__terms(mark(X)) mark(sqr(X)) -> a__sqr(mark(X)) mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(dbl(X)) -> a__dbl(mark(X)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(recip(X)) -> recip(mark(X)) mark(s(X)) -> s(X) mark(0) -> 0 mark(nil) -> nil Termination of R to be shown. R contains the following Dependency Pairs: A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) MARK(first(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> MARK(X2) MARK(dbl(X)) -> A__DBL(mark(X)) MARK(dbl(X)) -> MARK(X) MARK(terms(X)) -> A__TERMS(mark(X)) MARK(terms(X)) -> MARK(X) MARK(sqr(X)) -> A__SQR(mark(X)) MARK(sqr(X)) -> MARK(X) MARK(cons(X1, X2)) -> MARK(X1) MARK(recip(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) A__TERMS(N) -> A__SQR(mark(N)) A__TERMS(N) -> MARK(N) A__ADD(0, X) -> MARK(X) Furthermore, R contains one SCC. SCC1: 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(recip(X)) -> MARK(X) MARK(cons(X1, X2)) -> MARK(X1) MARK(sqr(X)) -> MARK(X) MARK(terms(X)) -> MARK(X) A__TERMS(N) -> MARK(N) MARK(terms(X)) -> A__TERMS(mark(X)) MARK(dbl(X)) -> MARK(X) MARK(first(X1, X2)) -> MARK(X2) MARK(first(X1, X2)) -> MARK(X1) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) 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__terms(X) -> terms(X) a__terms(N) -> cons(recip(a__sqr(mark(N))), terms(s(N))) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(nil) -> nil mark(s(X)) -> s(X) mark(dbl(X)) -> a__dbl(mark(X)) mark(terms(X)) -> a__terms(mark(X)) mark(sqr(X)) -> a__sqr(mark(X)) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(recip(X)) -> recip(mark(X)) mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(0) -> 0 a__first(0, X) -> nil a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) a__first(X1, X2) -> first(X1, X2) a__dbl(X) -> dbl(X) a__dbl(s(X)) -> s(s(dbl(X))) a__dbl(0) -> 0 a__sqr(s(X)) -> s(add(sqr(X), dbl(X))) a__sqr(0) -> 0 a__sqr(X) -> sqr(X) Used ordering: Polynomial ordering with Polynomial interpretation: POL(A__TERMS(x_1)) = x_1 POL(add(x_1, x_2)) = 1 + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = 0 POL(dbl(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(a__add(x_1, x_2)) = 1 + x_1 + x_2 POL(mark(x_1)) = x_1 POL(a__first(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(a__dbl(x_1)) = x_1 POL(cons(x_1, x_2)) = x_1 POL(first(x_1, x_2)) = x_1 + x_2 POL(A__FIRST(x_1, x_2)) = x_2 POL(a__terms(x_1)) = x_1 POL(terms(x_1)) = x_1 POL(A__ADD(x_1, x_2)) = x_2 POL(sqr(x_1)) = x_1 POL(recip(x_1)) = x_1 POL(a__sqr(x_1)) = x_1 resulting in one subcycle. SCC1.Polo1: MARK(recip(X)) -> MARK(X) MARK(cons(X1, X2)) -> MARK(X1) MARK(sqr(X)) -> MARK(X) MARK(terms(X)) -> MARK(X) A__TERMS(N) -> MARK(N) MARK(terms(X)) -> A__TERMS(mark(X)) MARK(dbl(X)) -> MARK(X) MARK(first(X1, X2)) -> MARK(X2) MARK(first(X1, X2)) -> MARK(X1) A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) 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__terms(X) -> terms(X) a__terms(N) -> cons(recip(a__sqr(mark(N))), terms(s(N))) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(nil) -> nil mark(s(X)) -> s(X) mark(dbl(X)) -> a__dbl(mark(X)) mark(terms(X)) -> a__terms(mark(X)) mark(sqr(X)) -> a__sqr(mark(X)) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(recip(X)) -> recip(mark(X)) mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(0) -> 0 a__first(0, X) -> nil a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) a__first(X1, X2) -> first(X1, X2) a__dbl(X) -> dbl(X) a__dbl(s(X)) -> s(s(dbl(X))) a__dbl(0) -> 0 a__sqr(s(X)) -> s(add(sqr(X), dbl(X))) a__sqr(0) -> 0 a__sqr(X) -> sqr(X) Used ordering: Polynomial ordering with Polynomial interpretation: POL(A__TERMS(x_1)) = x_1 POL(add(x_1, x_2)) = x_2 POL(nil) = 0 POL(s(x_1)) = 0 POL(dbl(x_1)) = x_1 POL(MARK(x_1)) = x_1 POL(a__add(x_1, x_2)) = x_2 POL(mark(x_1)) = x_1 POL(a__first(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(a__dbl(x_1)) = x_1 POL(cons(x_1, x_2)) = x_1 POL(first(x_1, x_2)) = x_1 + x_2 POL(A__FIRST(x_1, x_2)) = x_2 POL(a__terms(x_1)) = 1 + x_1 POL(terms(x_1)) = 1 + x_1 POL(sqr(x_1)) = x_1 POL(recip(x_1)) = 1 + x_1 POL(a__sqr(x_1)) = x_1 resulting in one subcycle. SCC1.Polo1.Polo1: MARK(sqr(X)) -> MARK(X) MARK(dbl(X)) -> MARK(X) MARK(first(X1, X2)) -> MARK(X2) MARK(first(X1, X2)) -> MARK(X1) A__FIRST(s(X), cons(Y, Z)) -> MARK(Y) MARK(first(X1, X2)) -> A__FIRST(mark(X1), mark(X2)) MARK(cons(X1, X2)) -> MARK(X1) 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__terms(X) -> terms(X) a__terms(N) -> cons(recip(a__sqr(mark(N))), terms(s(N))) a__add(X1, X2) -> add(X1, X2) a__add(0, X) -> mark(X) a__add(s(X), Y) -> s(add(X, Y)) mark(first(X1, X2)) -> a__first(mark(X1), mark(X2)) mark(nil) -> nil mark(s(X)) -> s(X) mark(dbl(X)) -> a__dbl(mark(X)) mark(terms(X)) -> a__terms(mark(X)) mark(sqr(X)) -> a__sqr(mark(X)) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(recip(X)) -> recip(mark(X)) mark(add(X1, X2)) -> a__add(mark(X1), mark(X2)) mark(0) -> 0 a__first(0, X) -> nil a__first(s(X), cons(Y, Z)) -> cons(mark(Y), first(X, Z)) a__first(X1, X2) -> first(X1, X2) a__dbl(X) -> dbl(X) a__dbl(s(X)) -> s(s(dbl(X))) a__dbl(0) -> 0 a__sqr(s(X)) -> s(add(sqr(X), dbl(X))) a__sqr(0) -> 0 a__sqr(X) -> sqr(X) Used ordering: Polynomial ordering with Polynomial interpretation: POL(add(x_1, x_2)) = x_2 POL(nil) = 0 POL(s(x_1)) = 0 POL(dbl(x_1)) = 1 + x_1 POL(MARK(x_1)) = x_1 POL(a__add(x_1, x_2)) = x_2 POL(mark(x_1)) = x_1 POL(a__first(x_1, x_2)) = 1 + x_1 + x_2 POL(0) = 0 POL(a__dbl(x_1)) = 1 + x_1 POL(cons(x_1, x_2)) = 1 + x_1 POL(first(x_1, x_2)) = 1 + x_1 + x_2 POL(A__FIRST(x_1, x_2)) = x_2 POL(a__terms(x_1)) = 1 POL(terms(x_1)) = 1 POL(sqr(x_1)) = 1 + x_1 POL(recip(x_1)) = 0 POL(a__sqr(x_1)) = 1 + x_1 resulting in no subcycles. Termination of R successfully shown. Duration: 3.620 seconds.