YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (677ms).
 | – Problem 2 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 8 was processed with processor SubtermCriterion (0ms).
 | – Problem 3 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 9 was processed with processor SubtermCriterion (1ms).
 | – Problem 4 was processed with processor SubtermCriterion (13ms).
 |    | – Problem 10 was processed with processor SubtermCriterion (2ms).
 |    |    | – Problem 12 was processed with processor PolynomialLinearRange4 (41ms).
 |    |    |    | – Problem 14 was processed with processor PolynomialLinearRange4 (25ms).
 | – Problem 5 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 11 was processed with processor SubtermCriterion (0ms).
 | – Problem 6 was processed with processor SubtermCriterion (2ms).
 | – Problem 7 was processed with processor PolynomialLinearRange4 (375ms).
 |    | – Problem 13 was processed with processor PolynomialLinearRange4 (529ms).
 |    |    | – Problem 15 was processed with processor PolynomialLinearRange4 (333ms).
 |    |    |    | – Problem 16 was processed with processor PolynomialLinearRange4 (284ms).
 |    |    |    |    | – Problem 17 was processed with processor PolynomialLinearRange4 (240ms).
 |    |    |    |    |    | – Problem 18 was processed with processor PolynomialLinearRange4 (258ms).
 |    |    |    |    |    |    | – Problem 19 was processed with processor PolynomialLinearRange4 (221ms).
 |    |    |    |    |    |    |    | – Problem 20 was processed with processor PolynomialLinearRange4 (220ms).
 |    |    |    |    |    |    |    |    | – Problem 21 was processed with processor PolynomialLinearRange4 (202ms).
 |    |    |    |    |    |    |    |    |    | – Problem 22 was processed with processor PolynomialLinearRange4 (30ms).
 |    |    |    |    |    |    |    |    |    |    | – Problem 23 was processed with processor ReductionPairSAT (106ms).
 |    |    |    |    |    |    |    |    |    |    |    | – Problem 24 was processed with processor DependencyGraph (0ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

geq#(active(X1), X2) → geq#(X1, X2)mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))minus#(X1, mark(X2)) → minus#(X1, X2)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)active#(geq(X, 0)) → mark#(true)
mark#(s(X)) → s#(mark(X))active#(if(true, X, Y)) → mark#(X)
geq#(X1, mark(X2)) → geq#(X1, X2)active#(geq(0, s(Y))) → mark#(false)
minus#(X1, active(X2)) → minus#(X1, X2)active#(div(0, s(Y))) → mark#(0)
geq#(mark(X1), X2) → geq#(X1, X2)active#(div(s(X), s(Y))) → geq#(X, Y)
active#(div(s(X), s(Y))) → div#(minus(X, Y), s(Y))mark#(s(X)) → mark#(X)
mark#(minus(X1, X2)) → active#(minus(X1, X2))active#(minus(s(X), s(Y))) → mark#(minus(X, Y))
active#(minus(0, Y)) → mark#(0)mark#(div(X1, X2)) → mark#(X1)
active#(div(s(X), s(Y))) → s#(div(minus(X, Y), s(Y)))mark#(true) → active#(true)
div#(X1, active(X2)) → div#(X1, X2)active#(div(s(X), s(Y))) → s#(Y)
active#(geq(s(X), s(Y))) → geq#(X, Y)active#(minus(s(X), s(Y))) → minus#(X, Y)
active#(div(s(X), s(Y))) → if#(geq(X, Y), s(div(minus(X, Y), s(Y))), 0)if#(X1, mark(X2), X3) → if#(X1, X2, X3)
if#(X1, X2, mark(X3)) → if#(X1, X2, X3)div#(mark(X1), X2) → div#(X1, X2)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)mark#(if(X1, X2, X3)) → mark#(X1)
div#(active(X1), X2) → div#(X1, X2)minus#(active(X1), X2) → minus#(X1, X2)
mark#(false) → active#(false)mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))
mark#(minus(X1, X2)) → minus#(X1, X2)active#(if(false, X, Y)) → mark#(Y)
mark#(div(X1, X2)) → div#(mark(X1), X2)mark#(geq(X1, X2)) → geq#(X1, X2)
if#(X1, active(X2), X3) → if#(X1, X2, X3)active#(div(s(X), s(Y))) → minus#(X, Y)
minus#(mark(X1), X2) → minus#(X1, X2)div#(X1, mark(X2)) → div#(X1, X2)
mark#(if(X1, X2, X3)) → if#(mark(X1), X2, X3)mark#(0) → active#(0)
mark#(s(X)) → active#(s(mark(X)))active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
geq#(X1, active(X2)) → geq#(X1, X2)mark#(div(X1, X2)) → active#(div(mark(X1), X2))
if#(active(X1), X2, X3) → if#(X1, X2, X3)s#(mark(X)) → s#(X)
s#(active(X)) → s#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


The following SCCs where found

minus#(mark(X1), X2) → minus#(X1, X2)minus#(X1, active(X2)) → minus#(X1, X2)
minus#(X1, mark(X2)) → minus#(X1, X2)minus#(active(X1), X2) → minus#(X1, X2)

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(X1, active(X2), X3) → if#(X1, X2, X3)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

s#(mark(X)) → s#(X)s#(active(X)) → s#(X)

div#(X1, mark(X2)) → div#(X1, X2)div#(X1, active(X2)) → div#(X1, X2)
div#(mark(X1), X2) → div#(X1, X2)div#(active(X1), X2) → div#(X1, X2)

geq#(mark(X1), X2) → geq#(X1, X2)geq#(active(X1), X2) → geq#(X1, X2)
geq#(X1, active(X2)) → geq#(X1, X2)geq#(X1, mark(X2)) → geq#(X1, X2)

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))mark#(s(X)) → active#(s(mark(X)))
active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active#(if(false, X, Y)) → mark#(Y)
mark#(geq(X1, X2)) → active#(geq(X1, X2))active#(geq(s(X), s(Y))) → mark#(geq(X, Y))
mark#(div(X1, X2)) → active#(div(mark(X1), X2))active#(if(true, X, Y)) → mark#(X)
mark#(if(X1, X2, X3)) → mark#(X1)mark#(s(X)) → mark#(X)
mark#(minus(X1, X2)) → active#(minus(X1, X2))active#(minus(s(X), s(Y))) → mark#(minus(X, Y))
mark#(div(X1, X2)) → mark#(X1)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

geq#(mark(X1), X2) → geq#(X1, X2)geq#(active(X1), X2) → geq#(X1, X2)
geq#(X1, active(X2)) → geq#(X1, X2)geq#(X1, mark(X2)) → geq#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

geq#(active(X1), X2) → geq#(X1, X2)geq#(mark(X1), X2) → geq#(X1, X2)

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

geq#(X1, active(X2)) → geq#(X1, X2)geq#(X1, mark(X2)) → geq#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

geq#(X1, active(X2)) → geq#(X1, X2)geq#(X1, mark(X2)) → geq#(X1, X2)

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

div#(X1, mark(X2)) → div#(X1, X2)div#(X1, active(X2)) → div#(X1, X2)
div#(mark(X1), X2) → div#(X1, X2)div#(active(X1), X2) → div#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

div#(mark(X1), X2) → div#(X1, X2)div#(active(X1), X2) → div#(X1, X2)

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

div#(X1, mark(X2)) → div#(X1, X2)div#(X1, active(X2)) → div#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

div#(X1, mark(X2)) → div#(X1, X2)div#(X1, active(X2)) → div#(X1, X2)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(X1, active(X2), X3) → if#(X1, X2, X3)
if#(X1, X2, active(X3)) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

if#(mark(X1), X2, X3) → if#(X1, X2, X3)if#(active(X1), X2, X3) → if#(X1, X2, X3)

Problem 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, X2, mark(X3)) → if#(X1, X2, X3)
if#(X1, active(X2), X3) → if#(X1, X2, X3)if#(X1, X2, active(X3)) → if#(X1, X2, X3)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

if#(X1, mark(X2), X3) → if#(X1, X2, X3)if#(X1, active(X2), X3) → if#(X1, X2, X3)

Problem 12: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

if#(X1, X2, mark(X3)) → if#(X1, X2, X3)if#(X1, X2, active(X3)) → if#(X1, X2, X3)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

There are no usable rules

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

if#(X1, X2, active(X3)) → if#(X1, X2, X3)

Problem 14: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

if#(X1, X2, mark(X3)) → if#(X1, X2, X3)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

There are no usable rules

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

if#(X1, X2, mark(X3)) → if#(X1, X2, X3)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

minus#(mark(X1), X2) → minus#(X1, X2)minus#(X1, active(X2)) → minus#(X1, X2)
minus#(X1, mark(X2)) → minus#(X1, X2)minus#(active(X1), X2) → minus#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

minus#(mark(X1), X2) → minus#(X1, X2)minus#(active(X1), X2) → minus#(X1, X2)

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

minus#(X1, active(X2)) → minus#(X1, X2)minus#(X1, mark(X2)) → minus#(X1, X2)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

minus#(X1, active(X2)) → minus#(X1, X2)minus#(X1, mark(X2)) → minus#(X1, X2)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(mark(X)) → s#(X)s#(active(X)) → s#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

s#(mark(X)) → s#(X)s#(active(X)) → s#(X)

Problem 7: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(s(X)) → active#(s(mark(X)))mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))
active#(if(false, X, Y)) → mark#(Y)active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
mark#(geq(X1, X2)) → active#(geq(X1, X2))active#(geq(s(X), s(Y))) → mark#(geq(X, Y))
mark#(div(X1, X2)) → active#(div(mark(X1), X2))active#(if(true, X, Y)) → mark#(X)
mark#(if(X1, X2, X3)) → mark#(X1)mark#(s(X)) → mark#(X)
mark#(minus(X1, X2)) → active#(minus(X1, X2))active#(minus(s(X), s(Y))) → mark#(minus(X, Y))
mark#(div(X1, X2)) → mark#(X1)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

mark#(s(X)) → active#(s(mark(X)))

Problem 13: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
active#(if(false, X, Y)) → mark#(Y)mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(s(X)) → mark#(X)mark#(minus(X1, X2)) → active#(minus(X1, X2))
mark#(div(X1, X2)) → active#(div(mark(X1), X2))active#(minus(s(X), s(Y))) → mark#(minus(X, Y))
mark#(div(X1, X2)) → mark#(X1)active#(if(true, X, Y)) → mark#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

mark#(div(X1, X2)) → mark#(X1)

Problem 15: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(if(false, X, Y)) → mark#(Y)
active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(s(X)) → mark#(X)mark#(div(X1, X2)) → active#(div(mark(X1), X2))
mark#(minus(X1, X2)) → active#(minus(X1, X2))active#(minus(s(X), s(Y))) → mark#(minus(X, Y))
active#(if(true, X, Y)) → mark#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

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

Problem 16: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
active#(if(false, X, Y)) → mark#(Y)mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(minus(X1, X2)) → active#(minus(X1, X2))mark#(div(X1, X2)) → active#(div(mark(X1), X2))
active#(if(true, X, Y)) → mark#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

mark#(minus(X1, X2)) → active#(minus(X1, X2))

Problem 17: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(if(false, X, Y)) → mark#(Y)
active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(div(X1, X2)) → active#(div(mark(X1), X2))active#(if(true, X, Y)) → mark#(X)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

active#(if(true, X, Y)) → mark#(X)

Problem 18: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
active#(if(false, X, Y)) → mark#(Y)mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(div(X1, X2)) → active#(div(mark(X1), X2))

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

active#(if(false, X, Y)) → mark#(Y)

Problem 19: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))
mark#(geq(X1, X2)) → active#(geq(X1, X2))active#(geq(s(X), s(Y))) → mark#(geq(X, Y))
mark#(if(X1, X2, X3)) → mark#(X1)mark#(div(X1, X2)) → active#(div(mark(X1), X2))

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

mark#(if(X1, X2, X3)) → active#(if(mark(X1), X2, X3))

Problem 20: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)
mark#(div(X1, X2)) → active#(div(mark(X1), X2))

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

mark(minus(X1, X2)) → active(minus(X1, X2))minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
mark(s(X)) → active(s(mark(X)))div(X1, mark(X2)) → div(X1, X2)
active(div(0, s(Y))) → mark(0)mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))
minus(mark(X1), X2) → minus(X1, X2)active(minus(0, Y)) → mark(0)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)mark(true) → active(true)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)active(minus(s(X), s(Y))) → mark(minus(X, Y))
mark(0) → active(0)s(active(X)) → s(X)
active(geq(X, 0)) → mark(true)minus(active(X1), X2) → minus(X1, X2)
if(X1, active(X2), X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)active(geq(0, s(Y))) → mark(false)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
mark(div(X1, X2)) → active(div(mark(X1), X2))active(if(false, X, Y)) → mark(Y)
mark(geq(X1, X2)) → active(geq(X1, X2))active(geq(s(X), s(Y))) → mark(geq(X, Y))
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))if(X1, mark(X2), X3) → if(X1, X2, X3)
mark(false) → active(false)s(mark(X)) → s(X)
active(if(true, X, Y)) → mark(X)

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

mark#(div(X1, X2)) → active#(div(mark(X1), X2))

Problem 21: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

active#(div(s(X), s(Y))) → mark#(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))mark#(geq(X1, X2)) → active#(geq(X1, X2))
active#(geq(s(X), s(Y))) → mark#(geq(X, Y))mark#(if(X1, X2, X3)) → mark#(X1)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

if(X1, active(X2), X3) → if(X1, X2, X3)minus(X1, active(X2)) → minus(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(active(X1), X2) → div(X1, X2)
if(mark(X1), X2, X3) → if(X1, X2, X3)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)geq(X1, mark(X2)) → geq(X1, X2)
geq(active(X1), X2) → geq(X1, X2)minus(mark(X1), X2) → minus(X1, X2)
if(active(X1), X2, X3) → if(X1, X2, X3)minus(X1, mark(X2)) → minus(X1, X2)
geq(mark(X1), X2) → geq(X1, X2)if(X1, mark(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)div(X1, active(X2)) → div(X1, X2)
if(X1, X2, mark(X3)) → if(X1, X2, X3)s(mark(X)) → s(X)
s(active(X)) → s(X)minus(active(X1), X2) → minus(X1, X2)

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

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

Problem 22: PolynomialLinearRange4



Dependency Pair Problem

Dependency Pairs

mark#(geq(X1, X2)) → active#(geq(X1, X2))active#(geq(s(X), s(Y))) → mark#(geq(X, Y))
mark#(if(X1, X2, X3)) → mark#(X1)

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Polynomial Interpretation

Standard Usable rules

geq(X1, active(X2)) → geq(X1, X2)geq(X1, mark(X2)) → geq(X1, X2)
geq(active(X1), X2) → geq(X1, X2)geq(mark(X1), X2) → geq(X1, X2)

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

mark#(if(X1, X2, X3)) → mark#(X1)

Problem 23: ReductionPairSAT



Dependency Pair Problem

Dependency Pairs

mark#(geq(X1, X2)) → active#(geq(X1, X2))active#(geq(s(X), s(Y))) → mark#(geq(X, Y))

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


Function Precedence

active = mark < active# < geq = minus = 0 = s = if = div = false = true = mark#

Argument Filtering

geq: collapses to 2
minus: all arguments are removed from minus
0: all arguments are removed from 0
s: 1
if: all arguments are removed from if
div: all arguments are removed from div
false: all arguments are removed from false
true: all arguments are removed from true
active: collapses to 1
mark: 1
active#: collapses to 1
mark#: 1

Status

minus: multiset
0: multiset
s: lexicographic with permutation 1 → 1
if: multiset
div: multiset
false: multiset
true: multiset
mark: multiset
mark#: lexicographic with permutation 1 → 1

Usable Rules

geq(X1, active(X2)) → geq(X1, X2)geq(X1, mark(X2)) → geq(X1, X2)
geq(active(X1), X2) → geq(X1, X2)geq(mark(X1), X2) → geq(X1, X2)

The dependency pairs and usable rules are stronlgy conservative!

Eliminated dependency pairs

The following dependency pairs (at least) can be eliminated according to the given precedence.

mark#(geq(X1, X2)) → active#(geq(X1, X2))

Problem 24: DependencyGraph



Dependency Pair Problem

Dependency Pairs

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

Rewrite Rules

active(minus(0, Y)) → mark(0)active(minus(s(X), s(Y))) → mark(minus(X, Y))
active(geq(X, 0)) → mark(true)active(geq(0, s(Y))) → mark(false)
active(geq(s(X), s(Y))) → mark(geq(X, Y))active(div(0, s(Y))) → mark(0)
active(div(s(X), s(Y))) → mark(if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0))active(if(true, X, Y)) → mark(X)
active(if(false, X, Y)) → mark(Y)mark(minus(X1, X2)) → active(minus(X1, X2))
mark(0) → active(0)mark(s(X)) → active(s(mark(X)))
mark(geq(X1, X2)) → active(geq(X1, X2))mark(true) → active(true)
mark(false) → active(false)mark(div(X1, X2)) → active(div(mark(X1), X2))
mark(if(X1, X2, X3)) → active(if(mark(X1), X2, X3))minus(mark(X1), X2) → minus(X1, X2)
minus(X1, mark(X2)) → minus(X1, X2)minus(active(X1), X2) → minus(X1, X2)
minus(X1, active(X2)) → minus(X1, X2)s(mark(X)) → s(X)
s(active(X)) → s(X)geq(mark(X1), X2) → geq(X1, X2)
geq(X1, mark(X2)) → geq(X1, X2)geq(active(X1), X2) → geq(X1, X2)
geq(X1, active(X2)) → geq(X1, X2)div(mark(X1), X2) → div(X1, X2)
div(X1, mark(X2)) → div(X1, X2)div(active(X1), X2) → div(X1, X2)
div(X1, active(X2)) → div(X1, X2)if(mark(X1), X2, X3) → if(X1, X2, X3)
if(X1, mark(X2), X3) → if(X1, X2, X3)if(X1, X2, mark(X3)) → if(X1, X2, X3)
if(active(X1), X2, X3) → if(X1, X2, X3)if(X1, active(X2), X3) → if(X1, X2, X3)
if(X1, X2, active(X3)) → if(X1, X2, X3)

Original Signature

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

Strategy


There are no SCCs!