YES

The TRS could be proven terminating. The proof took 1477 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (84ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4iUR (868ms).
 |    | – Problem 3 was processed with processor DependencyGraph (3ms).
 |    |    | – Problem 4 was processed with processor PolynomialLinearRange4iUR (322ms).
 |    |    |    | – Problem 5 was processed with processor DependencyGraph (1ms).
 |    |    |    |    | – Problem 6 was processed with processor PolynomialLinearRange4iUR (15ms).
 |    |    |    |    |    | – Problem 7 was processed with processor PolynomialLinearRange4iUR (35ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

a__hd#(cons(X, Y)) → mark#(X)mark#(incr(X)) → a__incr#(mark(X))
a__nats# → a__adx#(a__zeros)mark#(hd(X)) → mark#(X)
mark#(zeros) → a__zeros#mark#(nats) → a__nats#
mark#(incr(X)) → mark#(X)mark#(tl(X)) → a__tl#(mark(X))
mark#(adx(X)) → a__adx#(mark(X))mark#(hd(X)) → a__hd#(mark(X))
mark#(tl(X)) → mark#(X)mark#(adx(X)) → mark#(X)
a__adx#(cons(X, Y)) → a__incr#(cons(X, adx(Y)))a__tl#(cons(X, Y)) → mark#(Y)
a__nats# → a__zeros#

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, adx, a__adx, incr, cons

Strategy


The following SCCs where found

mark#(tl(X)) → mark#(X)mark#(adx(X)) → mark#(X)
a__hd#(cons(X, Y)) → mark#(X)mark#(hd(X)) → mark#(X)
a__tl#(cons(X, Y)) → mark#(Y)mark#(incr(X)) → mark#(X)
mark#(tl(X)) → a__tl#(mark(X))mark#(hd(X)) → a__hd#(mark(X))

Problem 2: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(tl(X)) → mark#(X)mark#(adx(X)) → mark#(X)
a__hd#(cons(X, Y)) → mark#(X)mark#(hd(X)) → mark#(X)
a__tl#(cons(X, Y)) → mark#(Y)mark#(incr(X)) → mark#(X)
mark#(tl(X)) → a__tl#(mark(X))mark#(hd(X)) → a__hd#(mark(X))

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, adx, a__adx, incr, cons

Strategy


Polynomial Interpretation

Improved Usable rules

mark(s(X)) → s(X)mark(0) → 0
a__tl(X) → tl(X)a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
mark(cons(X1, X2)) → cons(X1, X2)a__incr(cons(X, Y)) → cons(s(X), incr(Y))
a__adx(X) → adx(X)a__zeros → zeros
a__hd(X) → hd(X)mark(hd(X)) → a__hd(mark(X))
a__nats → a__adx(a__zeros)mark(nats) → a__nats
mark(zeros) → a__zerosmark(tl(X)) → a__tl(mark(X))
mark(incr(X)) → a__incr(mark(X))a__nats → nats
a__tl(cons(X, Y)) → mark(Y)a__incr(X) → incr(X)
a__zeros → cons(0, zeros)mark(adx(X)) → a__adx(mark(X))
a__hd(cons(X, Y)) → mark(X)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(tl(X)) → mark#(X)a__hd#(cons(X, Y)) → mark#(X)
mark#(hd(X)) → mark#(X)

Problem 3: DependencyGraph



Dependency Pair Problem

Dependency Pairs

mark#(adx(X)) → mark#(X)a__tl#(cons(X, Y)) → mark#(Y)
mark#(incr(X)) → mark#(X)mark#(tl(X)) → a__tl#(mark(X))
mark#(hd(X)) → a__hd#(mark(X))

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, a__adx, adx, incr, cons

Strategy


The following SCCs where found

mark#(adx(X)) → mark#(X)a__tl#(cons(X, Y)) → mark#(Y)
mark#(incr(X)) → mark#(X)mark#(tl(X)) → a__tl#(mark(X))

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(adx(X)) → mark#(X)a__tl#(cons(X, Y)) → mark#(Y)
mark#(incr(X)) → mark#(X)mark#(tl(X)) → a__tl#(mark(X))

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, a__adx, adx, incr, cons

Strategy


Polynomial Interpretation

Improved Usable rules

mark(s(X)) → s(X)mark(0) → 0
a__tl(X) → tl(X)a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
mark(cons(X1, X2)) → cons(X1, X2)a__incr(cons(X, Y)) → cons(s(X), incr(Y))
a__adx(X) → adx(X)a__zeros → zeros
a__hd(X) → hd(X)mark(hd(X)) → a__hd(mark(X))
a__nats → a__adx(a__zeros)mark(nats) → a__nats
mark(zeros) → a__zerosmark(tl(X)) → a__tl(mark(X))
mark(incr(X)) → a__incr(mark(X))a__nats → nats
a__tl(cons(X, Y)) → mark(Y)a__incr(X) → incr(X)
a__zeros → cons(0, zeros)mark(adx(X)) → a__adx(mark(X))
a__hd(cons(X, Y)) → mark(X)

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(tl(X)) → a__tl#(mark(X))

Problem 5: DependencyGraph



Dependency Pair Problem

Dependency Pairs

mark#(adx(X)) → mark#(X)a__tl#(cons(X, Y)) → mark#(Y)
mark#(incr(X)) → mark#(X)

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, adx, a__adx, incr, cons

Strategy


The following SCCs where found

mark#(adx(X)) → mark#(X)mark#(incr(X)) → mark#(X)

Problem 6: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(adx(X)) → mark#(X)mark#(incr(X)) → mark#(X)

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, adx, a__adx, incr, cons

Strategy


Polynomial Interpretation

There are no usable rules

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(incr(X)) → mark#(X)

Problem 7: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(adx(X)) → mark#(X)

Rewrite Rules

a__nats → a__adx(a__zeros)a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__natsmark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zerosmark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)mark(0) → 0
mark(s(X)) → s(X)a__nats → nats
a__adx(X) → adx(X)a__zeros → zeros
a__incr(X) → incr(X)a__hd(X) → hd(X)
a__tl(X) → tl(X)

Original Signature

Termination of terms over the following signature is verified: a__zeros, tl, hd, mark, a__nats, a__hd, nats, 0, s, a__incr, zeros, a__tl, a__adx, adx, incr, cons

Strategy


Polynomial Interpretation

There are no usable rules

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

mark#(adx(X)) → mark#(X)