YES
The TRS could be proven terminating. The proof took 1157 ms.
Problem 1 was processed with processor DependencyGraph (87ms). | Problem 2 was processed with processor PolynomialLinearRange4 (89ms). | Problem 3 was processed with processor PolynomialLinearRange4 (37ms). | Problem 4 was processed with processor PolynomialLinearRange4 (292ms). | | Problem 5 was processed with processor DependencyGraph (5ms). | | | Problem 6 was processed with processor PolynomialLinearRange4 (137ms). | | | | Problem 7 was processed with processor PolynomialLinearRange4 (72ms). | | | | | Problem 8 was processed with processor PolynomialLinearRange4 (15ms).
| if#(false, X, Y) | → | T(Y) | T(minus(x_1, x_2)) | → | T(x_2) | |
| T(div(minus(X, Y), s(Y))) | → | div#(minus(X, Y), s(Y)) | T(div(x_1, x_2)) | → | T(x_2) | |
| T(minus(x_1, x_2)) | → | T(x_1) | div#(s(X), s(Y)) | → | geq#(X, Y) | |
| div#(s(X), s(Y)) | → | if#(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) | T(div(x_1, x_2)) | → | T(x_1) | |
| geq#(s(X), s(Y)) | → | geq#(X, Y) | minus#(s(X), s(Y)) | → | minus#(X, Y) | |
| T(s(x_1)) | → | T(x_1) | T(minus(X, Y)) | → | minus#(X, Y) | |
| if#(true, X, Y) | → | T(X) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
| geq#(s(X), s(Y)) → geq#(X, Y) |
| 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) | T(div(x_1, x_2)) → T(x_1) |
| T(minus(x_1, x_2)) → T(x_2) | if#(false, X, Y) → T(Y) |
| T(div(minus(X, Y), s(Y))) → div#(minus(X, Y), s(Y)) | T(s(x_1)) → T(x_1) |
| T(div(x_1, x_2)) → T(x_2) | T(minus(x_1, x_2)) → T(x_1) |
| if#(true, X, Y) → T(X) |
| minus#(s(X), s(Y)) | → | minus#(X, Y) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| minus#(s(X), s(Y)) | → | minus#(X, Y) |
| geq#(s(X), s(Y)) | → | geq#(X, Y) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| geq#(s(X), s(Y)) | → | geq#(X, Y) |
| div#(s(X), s(Y)) | → | if#(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) | T(div(x_1, x_2)) | → | T(x_1) | |
| T(minus(x_1, x_2)) | → | T(x_2) | if#(false, X, Y) | → | T(Y) | |
| T(div(minus(X, Y), s(Y))) | → | div#(minus(X, Y), s(Y)) | T(s(x_1)) | → | T(x_1) | |
| T(div(x_1, x_2)) | → | T(x_2) | T(minus(x_1, x_2)) | → | T(x_1) | |
| if#(true, X, Y) | → | T(X) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
| geq(0, s(Y)) | → | false | if(false, X, Y) | → | Y | |
| if(true, X, Y) | → | X | div(s(X), s(Y)) | → | if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) | |
| minus(0, Y) | → | 0 | geq(X, 0) | → | true | |
| geq(s(X), s(Y)) | → | geq(X, Y) | minus(s(X), s(Y)) | → | minus(X, Y) | |
| div(0, s(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)) | → | if#(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) |
| T(div(x_1, x_2)) | → | T(x_1) | if#(false, X, Y) | → | T(Y) | |
| T(minus(x_1, x_2)) | → | T(x_2) | T(div(minus(X, Y), s(Y))) | → | div#(minus(X, Y), s(Y)) | |
| T(s(x_1)) | → | T(x_1) | T(div(x_1, x_2)) | → | T(x_2) | |
| T(minus(x_1, x_2)) | → | T(x_1) | if#(true, X, Y) | → | T(X) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, 0, minus, s, if, div, false, true
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
| T(div(x_1, x_2)) → T(x_1) | T(minus(x_1, x_2)) → T(x_2) |
| T(s(x_1)) → T(x_1) | T(div(x_1, x_2)) → T(x_2) |
| T(minus(x_1, x_2)) → T(x_1) |
| T(div(x_1, x_2)) | → | T(x_1) | T(minus(x_1, x_2)) | → | T(x_2) | |
| T(s(x_1)) | → | T(x_1) | T(div(x_1, x_2)) | → | T(x_2) | |
| T(minus(x_1, x_2)) | → | T(x_1) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, 0, minus, s, if, div, false, true
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| T(s(x_1)) | → | T(x_1) |
| T(div(x_1, x_2)) | → | T(x_1) | T(minus(x_1, x_2)) | → | T(x_2) | |
| T(div(x_1, x_2)) | → | T(x_2) | T(minus(x_1, x_2)) | → | T(x_1) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, minus, 0, s, if, div, true, false
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| T(minus(x_1, x_2)) | → | T(x_2) | T(minus(x_1, x_2)) | → | T(x_1) |
| T(div(x_1, x_2)) | → | T(x_1) | T(div(x_1, x_2)) | → | T(x_2) |
| minus(0, Y) | → | 0 | minus(s(X), s(Y)) | → | minus(X, Y) | |
| geq(X, 0) | → | true | geq(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 |
Termination of terms over the following signature is verified: geq, 0, minus, s, if, div, false, true
Context-sensitive strategy:
μ(geq) = μ(minus) = μ(geq#) = μ(true) = μ(minus#) = μ(T) = μ(0) = μ(false) = ∅
μ(div) = μ(div#) = μ(s) = μ(if) = μ(if#) = {1}
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| T(div(x_1, x_2)) | → | T(x_1) | T(div(x_1, x_2)) | → | T(x_2) |