YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (123ms).
 | – Problem 2 was processed with processor PolynomialLinearRange4iUR (200ms).
 | – Problem 3 was processed with processor PolynomialLinearRange4iUR (144ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (350ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

minus#(n__s(X), n__s(Y)) → minus#(activate(X), activate(Y))minus#(n__s(X), n__s(Y)) → activate#(Y)
geq#(n__s(X), n__s(Y)) → activate#(X)div#(s(X), n__s(Y)) → if#(geq(X, activate(Y)), n__s(div(minus(X, activate(Y)), n__s(activate(Y)))), n__0)
activate#(n__s(X)) → s#(X)div#(s(X), n__s(Y)) → activate#(Y)
div#(s(X), n__s(Y)) → div#(minus(X, activate(Y)), n__s(activate(Y)))minus#(n__0, Y) → 0#
geq#(n__s(X), n__s(Y)) → geq#(activate(X), activate(Y))if#(false, X, Y) → activate#(Y)
if#(true, X, Y) → activate#(X)div#(s(X), n__s(Y)) → minus#(X, activate(Y))
activate#(n__0) → 0#div#(0, n__s(Y)) → 0#
div#(s(X), n__s(Y)) → geq#(X, activate(Y))geq#(n__s(X), n__s(Y)) → activate#(Y)
minus#(n__s(X), n__s(Y)) → activate#(X)

Rewrite Rules

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

Original Signature

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

Strategy


The following SCCs where found

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

geq#(n__s(X), n__s(Y)) → geq#(activate(X), activate(Y))

minus#(n__s(X), n__s(Y)) → minus#(activate(X), activate(Y))

Problem 2: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

geq#(n__s(X), n__s(Y)) → geq#(activate(X), activate(Y))

Rewrite Rules

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

Original Signature

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

Strategy


Polynomial Interpretation

Improved Usable rules

s(X) → n__s(X)activate(X) → X
activate(n__s(X)) → s(X)activate(n__0) → 0
0 → n__0

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

geq#(n__s(X), n__s(Y)) → geq#(activate(X), activate(Y))

Problem 3: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

minus#(n__s(X), n__s(Y)) → minus#(activate(X), activate(Y))

Rewrite Rules

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

Original Signature

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

Strategy


Polynomial Interpretation

Improved Usable rules

s(X) → n__s(X)activate(X) → X
activate(n__s(X)) → s(X)activate(n__0) → 0
0 → n__0

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

minus#(n__s(X), n__s(Y)) → minus#(activate(X), activate(Y))

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

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

Original Signature

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

Strategy


Polynomial Interpretation

Improved Usable rules

minus(n__0, Y) → 0minus(n__s(X), n__s(Y)) → minus(activate(X), activate(Y))
0 → n__0

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

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