YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (107ms).
 | – Problem 2 was processed with processor SubtermCriterion (29ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (1076ms).
 |    | – Problem 5 was processed with processor PolynomialLinearRange4iUR (669ms).
 |    |    | – Problem 6 was processed with processor PolynomialLinearRange4iUR (307ms).
 |    |    |    | – Problem 7 was processed with processor PolynomialLinearRange4iUR (328ms).
 |    |    |    |    | – Problem 8 was processed with processor DependencyGraph (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3))a__if#(mark(X1), X2, X3)mark#(minus(X1, X2))a__minus#(X1, X2)
a__div#(s(X), s(Y))a__geq#(X, Y)a__if#(true, X, Y)mark#(X)
a__minus#(s(X), s(Y))a__minus#(X, Y)a__geq#(s(X), s(Y))a__geq#(X, Y)
a__if#(false, X, Y)mark#(Y)mark#(if(X1, X2, X3))mark#(X1)
a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)mark#(s(X))mark#(X)
mark#(geq(X1, X2))a__geq#(X1, X2)mark#(div(X1, X2))a__div#(mark(X1), X2)
mark#(div(X1, X2))mark#(X1)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


The following SCCs where found

mark#(if(X1, X2, X3)) → a__if#(mark(X1), X2, X3)a__if#(false, X, Y) → mark#(Y)
mark#(if(X1, X2, X3)) → mark#(X1)a__div#(s(X), s(Y)) → a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
a__if#(true, X, Y) → mark#(X)mark#(s(X)) → mark#(X)
mark#(div(X1, X2)) → mark#(X1)mark#(div(X1, X2)) → a__div#(mark(X1), X2)

a__minus#(s(X), s(Y)) → a__minus#(X, Y)

a__geq#(s(X), s(Y)) → a__geq#(X, Y)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

a__geq#(s(X), s(Y))a__geq#(X, Y)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

a__geq#(s(X), s(Y))a__geq#(X, Y)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

a__minus#(s(X), s(Y))a__minus#(X, Y)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

a__minus#(s(X), s(Y))a__minus#(X, Y)

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3))a__if#(mark(X1), X2, X3)a__if#(false, X, Y)mark#(Y)
mark#(if(X1, X2, X3))mark#(X1)a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
a__if#(true, X, Y)mark#(X)mark#(s(X))mark#(X)
mark#(div(X1, X2))mark#(X1)mark#(div(X1, X2))a__div#(mark(X1), X2)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Polynomial Interpretation

Improved Usable rules

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

mark#(div(X1, X2))mark#(X1)

Problem 5: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3))a__if#(mark(X1), X2, X3)a__if#(false, X, Y)mark#(Y)
mark#(if(X1, X2, X3))mark#(X1)mark#(s(X))mark#(X)
a__if#(true, X, Y)mark#(X)a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
mark#(div(X1, X2))a__div#(mark(X1), X2)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Polynomial Interpretation

Improved Usable rules

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

mark#(if(X1, X2, X3))a__if#(mark(X1), X2, X3)mark#(if(X1, X2, X3))mark#(X1)

Problem 6: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

a__if#(false, X, Y)mark#(Y)a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
a__if#(true, X, Y)mark#(X)mark#(s(X))mark#(X)
mark#(div(X1, X2))a__div#(mark(X1), X2)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Polynomial Interpretation

Improved Usable rules

a__minus(s(X), s(Y))a__minus(X, Y)a__minus(0, Y)0
mark(geq(X1, X2))a__geq(X1, X2)mark(0)0
a__if(false, X, Y)mark(Y)a__div(0, s(Y))0
mark(false)falsea__geq(X1, X2)geq(X1, X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)a__if(X1, X2, X3)if(X1, X2, X3)
a__geq(s(X), s(Y))a__geq(X, Y)a__geq(X, 0)true
mark(true)truemark(minus(X1, X2))a__minus(X1, X2)
a__if(true, X, Y)mark(X)mark(s(X))s(mark(X))
a__div(X1, X2)div(X1, X2)a__minus(X1, X2)minus(X1, X2)
a__geq(0, s(Y))falsemark(div(X1, X2))a__div(mark(X1), X2)
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)

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

mark#(s(X))mark#(X)

Problem 7: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

a__if#(false, X, Y)mark#(Y)a__if#(true, X, Y)mark#(X)
a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)mark#(div(X1, X2))a__div#(mark(X1), X2)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


Polynomial Interpretation

Improved Usable rules

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

mark#(div(X1, X2))a__div#(mark(X1), X2)

Problem 8: DependencyGraph



Dependency Pair Problem

Dependency Pairs

a__if#(false, X, Y)mark#(Y)a__div#(s(X), s(Y))a__if#(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
a__if#(true, X, Y)mark#(X)

Rewrite Rules

a__minus(0, Y)0a__minus(s(X), s(Y))a__minus(X, Y)
a__geq(X, 0)truea__geq(0, s(Y))false
a__geq(s(X), s(Y))a__geq(X, Y)a__div(0, s(Y))0
a__div(s(X), s(Y))a__if(a__geq(X, Y), s(div(minus(X, Y), s(Y))), 0)a__if(true, X, Y)mark(X)
a__if(false, X, Y)mark(Y)mark(minus(X1, X2))a__minus(X1, X2)
mark(geq(X1, X2))a__geq(X1, X2)mark(div(X1, X2))a__div(mark(X1), X2)
mark(if(X1, X2, X3))a__if(mark(X1), X2, X3)mark(0)0
mark(s(X))s(mark(X))mark(true)true
mark(false)falsea__minus(X1, X2)minus(X1, X2)
a__geq(X1, X2)geq(X1, X2)a__div(X1, X2)div(X1, X2)
a__if(X1, X2, X3)if(X1, X2, X3)

Original Signature

Termination of terms over the following signature is verified: geq, minus, a__geq, a__div, div, true, mark, a__minus, 0, s, a__if, if, false

Strategy


There are no SCCs!