YES

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (291ms).
 | – Problem 2 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 7 was processed with processor DependencyGraph (1ms).
 | – Problem 3 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 8 was processed with processor PolynomialLinearRange4iUR (120ms).
 |    |    | – Problem 10 was processed with processor DependencyGraph (17ms).
 | – Problem 4 was processed with processor PolynomialLinearRange4iUR (188ms).
 |    | – Problem 9 was processed with processor PolynomialOrderingProcessor (134ms).
 | – Problem 5 was processed with processor SubtermCriterion (2ms).
 | – Problem 6 was processed with processor SubtermCriterion (2ms).

Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

divides#(y, x) → div#(x, y)pr#(x, s(s(y))) → divides#(s(s(y)), x)
times#(s(x), y) → times#(x, y)div#(div(x, y), z) → times#(y, z)
pr#(x, s(s(y))) → if#(divides(s(s(y)), x), x, s(y))divides#(y, x) → eq#(x, times(div(x, y), y))
quot#(s(x), s(y), z) → quot#(x, y, z)times#(s(x), y) → plus#(y, times(x, y))
if#(false, x, y) → pr#(x, y)divides#(y, x) → times#(div(x, y), y)
plus#(s(x), y) → plus#(x, y)plus#(s(x), y) → plus#(p(s(x)), y)
quot#(x, 0, s(z)) → div#(x, s(z))div#(x, y) → quot#(x, y, y)
eq#(s(x), s(y)) → eq#(x, y)div#(div(x, y), z) → div#(x, times(y, z))
prime#(s(s(x))) → pr#(s(s(x)), s(x))plus#(s(x), y) → p#(s(x))
plus#(x, s(y)) → p#(s(y))plus#(x, s(y)) → plus#(x, p(s(y)))

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


The following SCCs where found

if#(false, x, y) → pr#(x, y)pr#(x, s(s(y))) → if#(divides(s(s(y)), x), x, s(y))

plus#(s(x), y) → plus#(p(s(x)), y)plus#(s(x), y) → plus#(x, y)
plus#(x, s(y)) → plus#(x, p(s(y)))

times#(s(x), y) → times#(x, y)

eq#(s(x), s(y)) → eq#(x, y)

quot#(x, 0, s(z)) → div#(x, s(z))div#(x, y) → quot#(x, y, y)
div#(div(x, y), z) → div#(x, times(y, z))quot#(s(x), s(y), z) → quot#(x, y, z)

Problem 2: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

if#(false, x, y) → pr#(x, y)pr#(x, s(s(y))) → if#(divides(s(s(y)), x), x, s(y))

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

pr#(x, s(s(y))) → if#(divides(s(s(y)), x), x, s(y))

Problem 7: DependencyGraph



Dependency Pair Problem

Dependency Pairs

if#(false, x, y) → pr#(x, y)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


There are no SCCs!

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

quot#(x, 0, s(z)) → div#(x, s(z))div#(x, y) → quot#(x, y, y)
div#(div(x, y), z) → div#(x, times(y, z))quot#(s(x), s(y), z) → quot#(x, y, z)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

div#(div(x, y), z) → div#(x, times(y, z))quot#(s(x), s(y), z) → quot#(x, y, z)

Problem 8: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

quot#(x, 0, s(z)) → div#(x, s(z))div#(x, y) → quot#(x, y, y)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

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:

quot#(x, 0, s(z)) → div#(x, s(z))

Problem 10: DependencyGraph



Dependency Pair Problem

Dependency Pairs

div#(x, y) → quot#(x, y, y)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


There are no SCCs!

Problem 4: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

plus#(s(x), y) → plus#(p(s(x)), y)plus#(s(x), y) → plus#(x, y)
plus#(x, s(y)) → plus#(x, p(s(y)))

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Polynomial Interpretation

Improved Usable rules

p(s(x)) → x

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

plus#(s(x), y) → plus#(x, y)

Problem 9: PolynomialOrderingProcessor



Dependency Pair Problem

Dependency Pairs

plus#(s(x), y) → plus#(p(s(x)), y)plus#(x, s(y)) → plus#(x, p(s(y)))

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Polynomial Interpretation

Improved Usable rules

p(s(x)) → x

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

plus#(s(x), y) → plus#(p(s(x)), y)plus#(x, s(y)) → plus#(x, p(s(y)))

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

eq#(s(x), s(y)) → eq#(x, y)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

eq#(s(x), s(y)) → eq#(x, y)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

times#(s(x), y) → times#(x, y)

Rewrite Rules

p(s(x)) → xplus(x, 0) → x
plus(0, y) → yplus(s(x), y) → s(plus(x, y))
plus(s(x), y) → s(plus(p(s(x)), y))plus(x, s(y)) → s(plus(x, p(s(y))))
times(0, y) → 0times(s(0), y) → y
times(s(x), y) → plus(y, times(x, y))div(0, y) → 0
div(x, y) → quot(x, y, y)quot(0, s(y), z) → 0
quot(s(x), s(y), z) → quot(x, y, z)quot(x, 0, s(z)) → s(div(x, s(z)))
div(div(x, y), z) → div(x, times(y, z))eq(0, 0) → true
eq(s(x), 0) → falseeq(0, s(y)) → false
eq(s(x), s(y)) → eq(x, y)divides(y, x) → eq(x, times(div(x, y), y))
prime(s(s(x))) → pr(s(s(x)), s(x))pr(x, s(0)) → true
pr(x, s(s(y))) → if(divides(s(s(y)), x), x, s(y))if(true, x, y) → false
if(false, x, y) → pr(x, y)

Original Signature

Termination of terms over the following signature is verified: plus, div, true, divides, prime, 0, s, times, if, p, false, quot, pr, eq

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

times#(s(x), y) → times#(x, y)