TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60000 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (206ms).
| Problem 2 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (8ms), PolynomialLinearRange4iUR (827ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (10156ms), DependencyGraph (5ms), ReductionPairSAT (timeout)].
| Problem 3 was processed with processor SubtermCriterion (1ms).
| Problem 4 was processed with processor SubtermCriterion (1ms).
| | Problem 7 was processed with processor DependencyGraph (5ms).
| Problem 5 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (4ms), PolynomialLinearRange4iUR (105ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (449ms), DependencyGraph (1ms)].
| Problem 6 was processed with processor SubtermCriterion (2ms).
The following open problems remain:
Open Dependency Pair Problem 2
Dependency Pairs
if#(false, x, y, z, u) | → | if2#(divisible(z, y), x, y, z, u) | | if2#(false, x, y, z, u) | → | lcmIter#(x, y, plus(x, z), u) |
lcmIter#(x, y, z, u) | → | if#(or(ge(0, x), ge(z, u)), x, y, z, u) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, divisible, s, times, if, p, false
Open Dependency Pair Problem 5
Dependency Pairs
ifTimes#(false, x, y) | → | times#(y, p(x)) | | times#(x, y) | → | ifTimes#(ge(0, x), x, y) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, divisible, s, times, if, p, false
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
lcmIter#(x, y, z, u) | → | or#(ge(0, x), ge(z, u)) | | lcmIter#(x, y, z, u) | → | ge#(z, u) |
if#(false, x, y, z, u) | → | if2#(divisible(z, y), x, y, z, u) | | if2#(false, x, y, z, u) | → | lcmIter#(x, y, plus(x, z), u) |
ifTimes#(false, x, y) | → | times#(y, p(x)) | | lcmIter#(x, y, z, u) | → | if#(or(ge(0, x), ge(z, u)), x, y, z, u) |
if#(false, x, y, z, u) | → | divisible#(z, y) | | div#(x, y, 0) | → | divisible#(x, y) |
times#(x, y) | → | ifTimes#(ge(0, x), x, y) | | divisible#(s(x), s(y)) | → | div#(s(x), s(y), s(y)) |
ifTimes#(false, x, y) | → | plus#(y, times(y, p(x))) | | times#(x, y) | → | ge#(0, x) |
lcm#(x, y) | → | times#(x, y) | | div#(s(x), y, s(z)) | → | div#(x, y, z) |
plus#(s(x), y) | → | plus#(x, y) | | lcm#(x, y) | → | lcmIter#(x, y, 0, times(x, y)) |
lcmIter#(x, y, z, u) | → | ge#(0, x) | | ifTimes#(false, x, y) | → | p#(x) |
ge#(s(x), s(y)) | → | ge#(x, y) | | if2#(false, x, y, z, u) | → | plus#(x, z) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, s, divisible, times, if, p, false
Strategy
The following SCCs where found
ifTimes#(false, x, y) → times#(y, p(x)) | times#(x, y) → ifTimes#(ge(0, x), x, y) |
div#(s(x), y, s(z)) → div#(x, y, z) | div#(x, y, 0) → divisible#(x, y) |
divisible#(s(x), s(y)) → div#(s(x), s(y), s(y)) |
plus#(s(x), y) → plus#(x, y) |
ge#(s(x), s(y)) → ge#(x, y) |
if#(false, x, y, z, u) → if2#(divisible(z, y), x, y, z, u) | if2#(false, x, y, z, u) → lcmIter#(x, y, plus(x, z), u) |
lcmIter#(x, y, z, u) → if#(or(ge(0, x), ge(z, u)), x, y, z, u) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(s(x), y) | → | plus#(x, y) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, s, divisible, times, if, p, false
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(s(x), y) | → | plus#(x, y) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
div#(s(x), y, s(z)) | → | div#(x, y, z) | | div#(x, y, 0) | → | divisible#(x, y) |
divisible#(s(x), s(y)) | → | div#(s(x), s(y), s(y)) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, s, divisible, times, if, p, false
Strategy
Projection
The following projection was used:
- π (divisible#): 1
- π (div#): 1
Thus, the following dependency pairs are removed:
div#(s(x), y, s(z)) | → | div#(x, y, z) |
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
div#(x, y, 0) | → | divisible#(x, y) | | divisible#(s(x), s(y)) | → | div#(s(x), s(y), s(y)) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, divisible, s, times, if, p, false
Strategy
There are no SCCs!
Problem 6: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
ge#(s(x), s(y)) | → | ge#(x, y) |
Rewrite Rules
lcm(x, y) | → | lcmIter(x, y, 0, times(x, y)) | | lcmIter(x, y, z, u) | → | if(or(ge(0, x), ge(z, u)), x, y, z, u) |
if(true, x, y, z, u) | → | z | | if(false, x, y, z, u) | → | if2(divisible(z, y), x, y, z, u) |
if2(true, x, y, z, u) | → | z | | if2(false, x, y, z, u) | → | lcmIter(x, y, plus(x, z), u) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | ifTimes(ge(0, x), x, y) | | ifTimes(true, x, y) | → | 0 |
ifTimes(false, x, y) | → | plus(y, times(y, p(x))) | | p(s(x)) | → | x |
p(0) | → | s(s(0)) | | ge(x, 0) | → | true |
ge(0, s(y)) | → | false | | ge(s(x), s(y)) | → | ge(x, y) |
or(true, y) | → | true | | or(false, y) | → | y |
divisible(0, s(y)) | → | true | | divisible(s(x), s(y)) | → | div(s(x), s(y), s(y)) |
div(x, y, 0) | → | divisible(x, y) | | div(0, y, s(z)) | → | false |
div(s(x), y, s(z)) | → | div(x, y, z) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, b, c, or, a, div, true, ge, if2, lcmIter, 0, lcm, s, divisible, times, if, p, false
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
ge#(s(x), s(y)) | → | ge#(x, y) |