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)0n__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)0n__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
0n__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)0n__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
0n__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)0n__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))
0n__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)))