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