YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (19ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 | – Problem 3 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (156ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

minus#(s(X), s(Y)) → minus#(X, Y)div#(s(X), s(Y)) → if#(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)
div#(s(X), s(Y)) → div#(minus(X, Y), s(Y))div#(s(X), s(Y)) → geq#(X, Y)
div#(s(X), s(Y)) → minus#(X, Y)geq#(s(X), s(Y)) → geq#(X, Y)

Rewrite Rules

minus(0, Y) → 0minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → truegeq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)if(true, X, Y) → X
if(false, X, Y) → Y

Original Signature

Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false

Strategy


The following SCCs where found

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

div#(s(X), s(Y)) → div#(minus(X, Y), s(Y))

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

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

minus(0, Y) → 0minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → truegeq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)if(true, X, Y) → X
if(false, X, Y) → Y

Original Signature

Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

minus(0, Y) → 0minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → truegeq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)if(true, X, Y) → X
if(false, X, Y) → Y

Original Signature

Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

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

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

div#(s(X), s(Y)) → div#(minus(X, Y), s(Y))

Rewrite Rules

minus(0, Y) → 0minus(s(X), s(Y)) → minus(X, Y)
geq(X, 0) → truegeq(0, s(Y)) → false
geq(s(X), s(Y)) → geq(X, Y)div(0, s(Y)) → 0
div(s(X), s(Y)) → if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)if(true, X, Y) → X
if(false, X, Y) → Y

Original Signature

Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false

Strategy


Polynomial Interpretation

Improved Usable rules

minus(s(X), s(Y)) → minus(X, Y)minus(0, Y) → 0

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

div#(s(X), s(Y)) → div#(minus(X, Y), s(Y))