TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60095 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (96ms).
| – Problem 2 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (232ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (571ms), DependencyGraph (3ms)].
| – Problem 3 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (2ms), PolynomialLinearRange4iUR (380ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (1245ms), DependencyGraph (2ms)].
| – Problem 4 was processed with processor SubtermCriterion (1ms).
| – Problem 5 was processed with processor SubtermCriterion (1ms).
The following open problems remain:
Open Dependency Pair Problem 2
Dependency Pairs
timesIter#(x, y, z, u) | → | ifTimes#(ge(u, x), x, y, z, u) | | ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, plus(y, z), s(u)) |
Rewrite Rules
prod(xs) | → | prodIter(xs, s(0)) | | prodIter(xs, x) | → | ifProd(isempty(xs), xs, x) |
ifProd(true, xs, x) | → | x | | ifProd(false, xs, x) | → | prodIter(tail(xs), times(x, head(xs))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | timesIter(x, y, 0, 0) | | timesIter(x, y, z, u) | → | ifTimes(ge(u, x), x, y, z, u) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, plus(y, z), s(u)) |
isempty(nil) | → | true | | isempty(cons(x, xs)) | → | false |
head(nil) | → | error | | head(cons(x, xs)) | → | x |
tail(nil) | → | nil | | tail(cons(x, xs)) | → | xs |
ge(x, 0) | → | true | | ge(0, s(y)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, isempty, times, false, head, cons, nil, prod
Open Dependency Pair Problem 3
Dependency Pairs
ifProd#(false, xs, x) | → | prodIter#(tail(xs), times(x, head(xs))) | | prodIter#(xs, x) | → | ifProd#(isempty(xs), xs, x) |
Rewrite Rules
prod(xs) | → | prodIter(xs, s(0)) | | prodIter(xs, x) | → | ifProd(isempty(xs), xs, x) |
ifProd(true, xs, x) | → | x | | ifProd(false, xs, x) | → | prodIter(tail(xs), times(x, head(xs))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | timesIter(x, y, 0, 0) | | timesIter(x, y, z, u) | → | ifTimes(ge(u, x), x, y, z, u) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, plus(y, z), s(u)) |
isempty(nil) | → | true | | isempty(cons(x, xs)) | → | false |
head(nil) | → | error | | head(cons(x, xs)) | → | x |
tail(nil) | → | nil | | tail(cons(x, xs)) | → | xs |
ge(x, 0) | → | true | | ge(0, s(y)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, isempty, times, false, head, cons, nil, prod
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
timesIter#(x, y, z, u) | → | ifTimes#(ge(u, x), x, y, z, u) | | prodIter#(xs, x) | → | ifProd#(isempty(xs), xs, x) |
ifProd#(false, xs, x) | → | head#(xs) | | ifProd#(false, xs, x) | → | tail#(xs) |
times#(x, y) | → | timesIter#(x, y, 0, 0) | | ifProd#(false, xs, x) | → | prodIter#(tail(xs), times(x, head(xs))) |
ifProd#(false, xs, x) | → | times#(x, head(xs)) | | plus#(s(x), y) | → | plus#(x, y) |
ifTimes#(false, x, y, z, u) | → | timesIter#(x, y, plus(y, z), s(u)) | | prod#(xs) | → | prodIter#(xs, s(0)) |
ge#(s(x), s(y)) | → | ge#(x, y) | | ifTimes#(false, x, y, z, u) | → | plus#(y, z) |
prodIter#(xs, x) | → | isempty#(xs) | | timesIter#(x, y, z, u) | → | ge#(u, x) |
Rewrite Rules
prod(xs) | → | prodIter(xs, s(0)) | | prodIter(xs, x) | → | ifProd(isempty(xs), xs, x) |
ifProd(true, xs, x) | → | x | | ifProd(false, xs, x) | → | prodIter(tail(xs), times(x, head(xs))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | timesIter(x, y, 0, 0) | | timesIter(x, y, z, u) | → | ifTimes(ge(u, x), x, y, z, u) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, plus(y, z), s(u)) |
isempty(nil) | → | true | | isempty(cons(x, xs)) | → | false |
head(nil) | → | error | | head(cons(x, xs)) | → | x |
tail(nil) | → | nil | | tail(cons(x, xs)) | → | xs |
ge(x, 0) | → | true | | ge(0, s(y)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons
Strategy
The following SCCs where found
plus#(s(x), y) → plus#(x, y) |
ge#(s(x), s(y)) → ge#(x, y) |
ifProd#(false, xs, x) → prodIter#(tail(xs), times(x, head(xs))) | prodIter#(xs, x) → ifProd#(isempty(xs), xs, x) |
timesIter#(x, y, z, u) → ifTimes#(ge(u, x), x, y, z, u) | ifTimes#(false, x, y, z, u) → timesIter#(x, y, plus(y, z), s(u)) |
Problem 4: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
ge#(s(x), s(y)) | → | ge#(x, y) |
Rewrite Rules
prod(xs) | → | prodIter(xs, s(0)) | | prodIter(xs, x) | → | ifProd(isempty(xs), xs, x) |
ifProd(true, xs, x) | → | x | | ifProd(false, xs, x) | → | prodIter(tail(xs), times(x, head(xs))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | timesIter(x, y, 0, 0) | | timesIter(x, y, z, u) | → | ifTimes(ge(u, x), x, y, z, u) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, plus(y, z), s(u)) |
isempty(nil) | → | true | | isempty(cons(x, xs)) | → | false |
head(nil) | → | error | | head(cons(x, xs)) | → | x |
tail(nil) | → | nil | | tail(cons(x, xs)) | → | xs |
ge(x, 0) | → | true | | ge(0, s(y)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
ge#(s(x), s(y)) | → | ge#(x, y) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
plus#(s(x), y) | → | plus#(x, y) |
Rewrite Rules
prod(xs) | → | prodIter(xs, s(0)) | | prodIter(xs, x) | → | ifProd(isempty(xs), xs, x) |
ifProd(true, xs, x) | → | x | | ifProd(false, xs, x) | → | prodIter(tail(xs), times(x, head(xs))) |
plus(0, y) | → | y | | plus(s(x), y) | → | s(plus(x, y)) |
times(x, y) | → | timesIter(x, y, 0, 0) | | timesIter(x, y, z, u) | → | ifTimes(ge(u, x), x, y, z, u) |
ifTimes(true, x, y, z, u) | → | z | | ifTimes(false, x, y, z, u) | → | timesIter(x, y, plus(y, z), s(u)) |
isempty(nil) | → | true | | isempty(cons(x, xs)) | → | false |
head(nil) | → | error | | head(cons(x, xs)) | → | x |
tail(nil) | → | nil | | tail(cons(x, xs)) | → | xs |
ge(x, 0) | → | true | | ge(0, s(y)) | → | false |
ge(s(x), s(y)) | → | ge(x, y) | | a | → | b |
a | → | c |
Original Signature
Termination of terms over the following signature is verified: ifTimes, plus, ifProd, b, error, c, a, prodIter, true, ge, tail, timesIter, 0, s, times, isempty, false, head, prod, nil, cons
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
plus#(s(x), y) | → | plus#(x, y) |