TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60015 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (165ms).
| Problem 2 was processed with processor SubtermCriterion (1ms).
| Problem 3 was processed with processor SubtermCriterion (1ms).
| Problem 4 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (4ms), PolynomialLinearRange4iUR (1119ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (4925ms), DependencyGraph (4ms), ReductionPairSAT (timeout)].
| Problem 5 was processed with processor SubtermCriterion (1ms).
The following open problems remain:
Open Dependency Pair Problem 4
Dependency Pairs
helpb#(c, l, cons(y, ys), zs) | → | helpa#(s(c), l, ys, zs) | | helpa#(c, l, ys, zs) | → | if#(ge(c, l), c, l, ys, zs) |
if#(false, c, l, ys, zs) | → | helpb#(c, l, greater(ys, zs), smaller(ys, zs)) |
Rewrite Rules
app(x, y) | → | helpa(0, plus(length(x), length(y)), x, y) | | plus(x, 0) | → | x |
plus(x, s(y)) | → | s(plus(x, y)) | | length(nil) | → | 0 |
length(cons(x, y)) | → | s(length(y)) | | helpa(c, l, ys, zs) | → | if(ge(c, l), c, l, ys, zs) |
ge(x, 0) | → | true | | ge(0, s(x)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | if(true, c, l, ys, zs) | → | nil |
if(false, c, l, ys, zs) | → | helpb(c, l, greater(ys, zs), smaller(ys, zs)) | | greater(ys, zs) | → | helpc(ge(length(ys), length(zs)), ys, zs) |
smaller(ys, zs) | → | helpc(ge(length(ys), length(zs)), zs, ys) | | helpc(true, ys, zs) | → | ys |
helpc(false, ys, zs) | → | zs | | helpb(c, l, cons(y, ys), zs) | → | cons(y, helpa(s(c), l, ys, zs)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, greater, true, ge, smaller, 0, s, if, helpa, length, helpb, false, helpc, nil, cons
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
smaller#(ys, zs) | → | ge#(length(ys), length(zs)) | | greater#(ys, zs) | → | length#(zs) |
greater#(ys, zs) | → | ge#(length(ys), length(zs)) | | helpa#(c, l, ys, zs) | → | if#(ge(c, l), c, l, ys, zs) |
if#(false, c, l, ys, zs) | → | helpb#(c, l, greater(ys, zs), smaller(ys, zs)) | | if#(false, c, l, ys, zs) | → | smaller#(ys, zs) |
helpb#(c, l, cons(y, ys), zs) | → | helpa#(s(c), l, ys, zs) | | smaller#(ys, zs) | → | length#(ys) |
length#(cons(x, y)) | → | length#(y) | | app#(x, y) | → | length#(y) |
plus#(x, s(y)) | → | plus#(x, y) | | greater#(ys, zs) | → | helpc#(ge(length(ys), length(zs)), ys, zs) |
smaller#(ys, zs) | → | helpc#(ge(length(ys), length(zs)), zs, ys) | | app#(x, y) | → | length#(x) |
helpa#(c, l, ys, zs) | → | ge#(c, l) | | ge#(s(x), s(y)) | → | ge#(x, y) |
if#(false, c, l, ys, zs) | → | greater#(ys, zs) | | app#(x, y) | → | plus#(length(x), length(y)) |
smaller#(ys, zs) | → | length#(zs) | | app#(x, y) | → | helpa#(0, plus(length(x), length(y)), x, y) |
greater#(ys, zs) | → | length#(ys) |
Rewrite Rules
app(x, y) | → | helpa(0, plus(length(x), length(y)), x, y) | | plus(x, 0) | → | x |
plus(x, s(y)) | → | s(plus(x, y)) | | length(nil) | → | 0 |
length(cons(x, y)) | → | s(length(y)) | | helpa(c, l, ys, zs) | → | if(ge(c, l), c, l, ys, zs) |
ge(x, 0) | → | true | | ge(0, s(x)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | if(true, c, l, ys, zs) | → | nil |
if(false, c, l, ys, zs) | → | helpb(c, l, greater(ys, zs), smaller(ys, zs)) | | greater(ys, zs) | → | helpc(ge(length(ys), length(zs)), ys, zs) |
smaller(ys, zs) | → | helpc(ge(length(ys), length(zs)), zs, ys) | | helpc(true, ys, zs) | → | ys |
helpc(false, ys, zs) | → | zs | | helpb(c, l, cons(y, ys), zs) | → | cons(y, helpa(s(c), l, ys, zs)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, greater, true, ge, smaller, 0, s, if, helpa, length, helpb, false, helpc, cons, nil
Strategy
The following SCCs where found
length#(cons(x, y)) → length#(y) |
plus#(x, s(y)) → plus#(x, y) |
helpb#(c, l, cons(y, ys), zs) → helpa#(s(c), l, ys, zs) | helpa#(c, l, ys, zs) → if#(ge(c, l), c, l, ys, zs) |
if#(false, c, l, ys, zs) → helpb#(c, l, greater(ys, zs), smaller(ys, zs)) |
ge#(s(x), s(y)) → ge#(x, y) |
Problem 2: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
ge#(s(x), s(y)) | → | ge#(x, y) |
Rewrite Rules
app(x, y) | → | helpa(0, plus(length(x), length(y)), x, y) | | plus(x, 0) | → | x |
plus(x, s(y)) | → | s(plus(x, y)) | | length(nil) | → | 0 |
length(cons(x, y)) | → | s(length(y)) | | helpa(c, l, ys, zs) | → | if(ge(c, l), c, l, ys, zs) |
ge(x, 0) | → | true | | ge(0, s(x)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | if(true, c, l, ys, zs) | → | nil |
if(false, c, l, ys, zs) | → | helpb(c, l, greater(ys, zs), smaller(ys, zs)) | | greater(ys, zs) | → | helpc(ge(length(ys), length(zs)), ys, zs) |
smaller(ys, zs) | → | helpc(ge(length(ys), length(zs)), zs, ys) | | helpc(true, ys, zs) | → | ys |
helpc(false, ys, zs) | → | zs | | helpb(c, l, cons(y, ys), zs) | → | cons(y, helpa(s(c), l, ys, zs)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, greater, true, ge, smaller, 0, s, if, helpa, length, helpb, false, helpc, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
ge#(s(x), s(y)) | → | ge#(x, y) |
Problem 3: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(x, s(y)) | → | plus#(x, y) |
Rewrite Rules
app(x, y) | → | helpa(0, plus(length(x), length(y)), x, y) | | plus(x, 0) | → | x |
plus(x, s(y)) | → | s(plus(x, y)) | | length(nil) | → | 0 |
length(cons(x, y)) | → | s(length(y)) | | helpa(c, l, ys, zs) | → | if(ge(c, l), c, l, ys, zs) |
ge(x, 0) | → | true | | ge(0, s(x)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | if(true, c, l, ys, zs) | → | nil |
if(false, c, l, ys, zs) | → | helpb(c, l, greater(ys, zs), smaller(ys, zs)) | | greater(ys, zs) | → | helpc(ge(length(ys), length(zs)), ys, zs) |
smaller(ys, zs) | → | helpc(ge(length(ys), length(zs)), zs, ys) | | helpc(true, ys, zs) | → | ys |
helpc(false, ys, zs) | → | zs | | helpb(c, l, cons(y, ys), zs) | → | cons(y, helpa(s(c), l, ys, zs)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, greater, true, ge, smaller, 0, s, if, helpa, length, helpb, false, helpc, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(x, s(y)) | → | plus#(x, y) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
length#(cons(x, y)) | → | length#(y) |
Rewrite Rules
app(x, y) | → | helpa(0, plus(length(x), length(y)), x, y) | | plus(x, 0) | → | x |
plus(x, s(y)) | → | s(plus(x, y)) | | length(nil) | → | 0 |
length(cons(x, y)) | → | s(length(y)) | | helpa(c, l, ys, zs) | → | if(ge(c, l), c, l, ys, zs) |
ge(x, 0) | → | true | | ge(0, s(x)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | if(true, c, l, ys, zs) | → | nil |
if(false, c, l, ys, zs) | → | helpb(c, l, greater(ys, zs), smaller(ys, zs)) | | greater(ys, zs) | → | helpc(ge(length(ys), length(zs)), ys, zs) |
smaller(ys, zs) | → | helpc(ge(length(ys), length(zs)), zs, ys) | | helpc(true, ys, zs) | → | ys |
helpc(false, ys, zs) | → | zs | | helpb(c, l, cons(y, ys), zs) | → | cons(y, helpa(s(c), l, ys, zs)) |
Original Signature
Termination of terms over the following signature is verified: plus, app, greater, true, ge, smaller, 0, s, if, helpa, length, helpb, false, helpc, cons, nil
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
length#(cons(x, y)) | → | length#(y) |