YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (19ms).
 | – Problem 2 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 5 was processed with processor DependencyGraph (0ms).
 | – Problem 3 was processed with processor PolynomialLinearRange4iUR (300ms).
 | – Problem 4 was processed with processor SubtermCriterion (1ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

quot#(s(X), s(Y)) → quot#(minus(X, Y), s(Y))ifMinus#(false, s(X), Y) → minus#(X, Y)
minus#(s(X), Y) → ifMinus#(le(s(X), Y), s(X), Y)minus#(s(X), Y) → le#(s(X), Y)
quot#(s(X), s(Y)) → minus#(X, Y)le#(s(X), s(Y)) → le#(X, Y)

Rewrite Rules

le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)minus(0, Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(true, s(X), Y) → 0
ifMinus(false, s(X), Y) → s(minus(X, Y))quot(0, s(Y)) → 0
quot(s(X), s(Y)) → s(quot(minus(X, Y), s(Y)))

Original Signature

Termination of terms over the following signature is verified: 0, minus, le, s, true, false, ifMinus, quot

Strategy


The following SCCs where found

quot#(s(X), s(Y)) → quot#(minus(X, Y), s(Y))

ifMinus#(false, s(X), Y) → minus#(X, Y)minus#(s(X), Y) → ifMinus#(le(s(X), Y), s(X), Y)

le#(s(X), s(Y)) → le#(X, Y)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

ifMinus#(false, s(X), Y) → minus#(X, Y)minus#(s(X), Y) → ifMinus#(le(s(X), Y), s(X), Y)

Rewrite Rules

le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)minus(0, Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(true, s(X), Y) → 0
ifMinus(false, s(X), Y) → s(minus(X, Y))quot(0, s(Y)) → 0
quot(s(X), s(Y)) → s(quot(minus(X, Y), s(Y)))

Original Signature

Termination of terms over the following signature is verified: 0, minus, le, s, true, false, ifMinus, quot

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

ifMinus#(false, s(X), Y) → minus#(X, Y)

Problem 5: DependencyGraph



Dependency Pair Problem

Dependency Pairs

minus#(s(X), Y) → ifMinus#(le(s(X), Y), s(X), Y)

Rewrite Rules

le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)minus(0, Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(true, s(X), Y) → 0
ifMinus(false, s(X), Y) → s(minus(X, Y))quot(0, s(Y)) → 0
quot(s(X), s(Y)) → s(quot(minus(X, Y), s(Y)))

Original Signature

Termination of terms over the following signature is verified: minus, 0, s, le, false, true, quot, ifMinus

Strategy


There are no SCCs!

Problem 3: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

quot#(s(X), s(Y)) → quot#(minus(X, Y), s(Y))

Rewrite Rules

le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)minus(0, Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(true, s(X), Y) → 0
ifMinus(false, s(X), Y) → s(minus(X, Y))quot(0, s(Y)) → 0
quot(s(X), s(Y)) → s(quot(minus(X, Y), s(Y)))

Original Signature

Termination of terms over the following signature is verified: 0, minus, le, s, true, false, ifMinus, quot

Strategy


Polynomial Interpretation

Improved Usable rules

minus(0, Y) → 0ifMinus(true, s(X), Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(false, s(X), Y) → s(minus(X, Y))

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

quot#(s(X), s(Y)) → quot#(minus(X, Y), s(Y))

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

le#(s(X), s(Y)) → le#(X, Y)

Rewrite Rules

le(0, Y) → truele(s(X), 0) → false
le(s(X), s(Y)) → le(X, Y)minus(0, Y) → 0
minus(s(X), Y) → ifMinus(le(s(X), Y), s(X), Y)ifMinus(true, s(X), Y) → 0
ifMinus(false, s(X), Y) → s(minus(X, Y))quot(0, s(Y)) → 0
quot(s(X), s(Y)) → s(quot(minus(X, Y), s(Y)))

Original Signature

Termination of terms over the following signature is verified: 0, minus, le, s, true, false, ifMinus, quot

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

le#(s(X), s(Y)) → le#(X, Y)