TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60008 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (219ms).
| Problem 2 remains open; application of the following processors failed [SubtermCriterion (4ms), DependencyGraph (6ms), PolynomialLinearRange4iUR (1830ms), DependencyGraph (5ms), PolynomialLinearRange8NegiUR (10000ms), DependencyGraph (3ms), ReductionPairSAT (546ms), DependencyGraph (4ms), SizeChangePrinciple (timeout)].
| Problem 3 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (2ms), PolynomialLinearRange4iUR (86ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (2ms), DependencyGraph (2ms), ReductionPairSAT (194ms), DependencyGraph (3ms)].
| Problem 4 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (77ms), DependencyGraph (2ms), PolynomialLinearRange8NegiUR (26ms), DependencyGraph (2ms), ReductionPairSAT (82ms), DependencyGraph (2ms)].
| Problem 5 was processed with processor SubtermCriterion (2ms).
The following open problems remain:
Open Dependency Pair Problem 2
Dependency Pairs
| prod#(l) | → | if#(shorter(l, 0), shorter(l, s(0)), l) | | if#(false, b, l) | → | if2#(b, l) |
| if2#(false, l) | → | prod#(cons(times(car(l), cadr(l)), cddr(l))) |
Rewrite Rules
| car(cons(x, l)) | → | x | | cddr(nil) | → | nil |
| cddr(cons(x, nil)) | → | nil | | cddr(cons(x, cons(y, l))) | → | l |
| cadr(cons(x, cons(y, l))) | → | y | | isZero(0) | → | true |
| isZero(s(x)) | → | false | | plus(x, y) | → | ifplus(isZero(x), x, y) |
| ifplus(true, x, y) | → | y | | ifplus(false, x, y) | → | s(plus(p(x), y)) |
| times(x, y) | → | iftimes(isZero(x), x, y) | | iftimes(true, x, y) | → | 0 |
| iftimes(false, x, y) | → | plus(y, times(p(x), y)) | | p(s(x)) | → | x |
| p(0) | → | 0 | | shorter(nil, y) | → | true |
| shorter(cons(x, l), 0) | → | false | | shorter(cons(x, l), s(y)) | → | shorter(l, y) |
| prod(l) | → | if(shorter(l, 0), shorter(l, s(0)), l) | | if(true, b, l) | → | s(0) |
| if(false, b, l) | → | if2(b, l) | | if2(true, l) | → | car(l) |
| if2(false, l) | → | prod(cons(times(car(l), cadr(l)), cddr(l))) |
Original Signature
Termination of terms over the following signature is verified: car, plus, cadr, iftimes, true, if2, cddr, ifplus, 0, s, times, if, p, false, shorter, prod, cons, nil, isZero
Open Dependency Pair Problem 3
Dependency Pairs
| iftimes#(false, x, y) | → | times#(p(x), y) | | times#(x, y) | → | iftimes#(isZero(x), x, y) |
Rewrite Rules
| car(cons(x, l)) | → | x | | cddr(nil) | → | nil |
| cddr(cons(x, nil)) | → | nil | | cddr(cons(x, cons(y, l))) | → | l |
| cadr(cons(x, cons(y, l))) | → | y | | isZero(0) | → | true |
| isZero(s(x)) | → | false | | plus(x, y) | → | ifplus(isZero(x), x, y) |
| ifplus(true, x, y) | → | y | | ifplus(false, x, y) | → | s(plus(p(x), y)) |
| times(x, y) | → | iftimes(isZero(x), x, y) | | iftimes(true, x, y) | → | 0 |
| iftimes(false, x, y) | → | plus(y, times(p(x), y)) | | p(s(x)) | → | x |
| p(0) | → | 0 | | shorter(nil, y) | → | true |
| shorter(cons(x, l), 0) | → | false | | shorter(cons(x, l), s(y)) | → | shorter(l, y) |
| prod(l) | → | if(shorter(l, 0), shorter(l, s(0)), l) | | if(true, b, l) | → | s(0) |
| if(false, b, l) | → | if2(b, l) | | if2(true, l) | → | car(l) |
| if2(false, l) | → | prod(cons(times(car(l), cadr(l)), cddr(l))) |
Original Signature
Termination of terms over the following signature is verified: car, plus, cadr, iftimes, true, if2, cddr, ifplus, 0, s, times, if, p, false, shorter, prod, cons, nil, isZero
Open Dependency Pair Problem 4
Dependency Pairs
| plus#(x, y) | → | ifplus#(isZero(x), x, y) | | ifplus#(false, x, y) | → | plus#(p(x), y) |
Rewrite Rules
| car(cons(x, l)) | → | x | | cddr(nil) | → | nil |
| cddr(cons(x, nil)) | → | nil | | cddr(cons(x, cons(y, l))) | → | l |
| cadr(cons(x, cons(y, l))) | → | y | | isZero(0) | → | true |
| isZero(s(x)) | → | false | | plus(x, y) | → | ifplus(isZero(x), x, y) |
| ifplus(true, x, y) | → | y | | ifplus(false, x, y) | → | s(plus(p(x), y)) |
| times(x, y) | → | iftimes(isZero(x), x, y) | | iftimes(true, x, y) | → | 0 |
| iftimes(false, x, y) | → | plus(y, times(p(x), y)) | | p(s(x)) | → | x |
| p(0) | → | 0 | | shorter(nil, y) | → | true |
| shorter(cons(x, l), 0) | → | false | | shorter(cons(x, l), s(y)) | → | shorter(l, y) |
| prod(l) | → | if(shorter(l, 0), shorter(l, s(0)), l) | | if(true, b, l) | → | s(0) |
| if(false, b, l) | → | if2(b, l) | | if2(true, l) | → | car(l) |
| if2(false, l) | → | prod(cons(times(car(l), cadr(l)), cddr(l))) |
Original Signature
Termination of terms over the following signature is verified: car, plus, cadr, iftimes, true, if2, cddr, ifplus, 0, s, times, if, p, false, shorter, prod, cons, nil, isZero
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| prod#(l) | → | if#(shorter(l, 0), shorter(l, s(0)), l) | | if2#(false, l) | → | cadr#(l) |
| iftimes#(false, x, y) | → | plus#(y, times(p(x), y)) | | if2#(true, l) | → | car#(l) |
| if#(false, b, l) | → | if2#(b, l) | | times#(x, y) | → | isZero#(x) |
| ifplus#(false, x, y) | → | p#(x) | | times#(x, y) | → | iftimes#(isZero(x), x, y) |
| if2#(false, l) | → | prod#(cons(times(car(l), cadr(l)), cddr(l))) | | ifplus#(false, x, y) | → | plus#(p(x), y) |
| iftimes#(false, x, y) | → | p#(x) | | shorter#(cons(x, l), s(y)) | → | shorter#(l, y) |
| if2#(false, l) | → | car#(l) | | prod#(l) | → | shorter#(l, 0) |
| if2#(false, l) | → | cddr#(l) | | iftimes#(false, x, y) | → | times#(p(x), y) |
| plus#(x, y) | → | isZero#(x) | | plus#(x, y) | → | ifplus#(isZero(x), x, y) |
| if2#(false, l) | → | times#(car(l), cadr(l)) | | prod#(l) | → | shorter#(l, s(0)) |
Rewrite Rules
| car(cons(x, l)) | → | x | | cddr(nil) | → | nil |
| cddr(cons(x, nil)) | → | nil | | cddr(cons(x, cons(y, l))) | → | l |
| cadr(cons(x, cons(y, l))) | → | y | | isZero(0) | → | true |
| isZero(s(x)) | → | false | | plus(x, y) | → | ifplus(isZero(x), x, y) |
| ifplus(true, x, y) | → | y | | ifplus(false, x, y) | → | s(plus(p(x), y)) |
| times(x, y) | → | iftimes(isZero(x), x, y) | | iftimes(true, x, y) | → | 0 |
| iftimes(false, x, y) | → | plus(y, times(p(x), y)) | | p(s(x)) | → | x |
| p(0) | → | 0 | | shorter(nil, y) | → | true |
| shorter(cons(x, l), 0) | → | false | | shorter(cons(x, l), s(y)) | → | shorter(l, y) |
| prod(l) | → | if(shorter(l, 0), shorter(l, s(0)), l) | | if(true, b, l) | → | s(0) |
| if(false, b, l) | → | if2(b, l) | | if2(true, l) | → | car(l) |
| if2(false, l) | → | prod(cons(times(car(l), cadr(l)), cddr(l))) |
Original Signature
Termination of terms over the following signature is verified: car, plus, cadr, iftimes, true, if2, cddr, ifplus, 0, s, times, if, p, false, shorter, isZero, nil, cons, prod
Strategy
The following SCCs where found
| iftimes#(false, x, y) → times#(p(x), y) | times#(x, y) → iftimes#(isZero(x), x, y) |
| shorter#(cons(x, l), s(y)) → shorter#(l, y) |
| plus#(x, y) → ifplus#(isZero(x), x, y) | ifplus#(false, x, y) → plus#(p(x), y) |
| prod#(l) → if#(shorter(l, 0), shorter(l, s(0)), l) | if#(false, b, l) → if2#(b, l) |
| if2#(false, l) → prod#(cons(times(car(l), cadr(l)), cddr(l))) |
Problem 5: SubtermCriterion
Dependency Pair Problem
Dependency Pairs
| shorter#(cons(x, l), s(y)) | → | shorter#(l, y) |
Rewrite Rules
| car(cons(x, l)) | → | x | | cddr(nil) | → | nil |
| cddr(cons(x, nil)) | → | nil | | cddr(cons(x, cons(y, l))) | → | l |
| cadr(cons(x, cons(y, l))) | → | y | | isZero(0) | → | true |
| isZero(s(x)) | → | false | | plus(x, y) | → | ifplus(isZero(x), x, y) |
| ifplus(true, x, y) | → | y | | ifplus(false, x, y) | → | s(plus(p(x), y)) |
| times(x, y) | → | iftimes(isZero(x), x, y) | | iftimes(true, x, y) | → | 0 |
| iftimes(false, x, y) | → | plus(y, times(p(x), y)) | | p(s(x)) | → | x |
| p(0) | → | 0 | | shorter(nil, y) | → | true |
| shorter(cons(x, l), 0) | → | false | | shorter(cons(x, l), s(y)) | → | shorter(l, y) |
| prod(l) | → | if(shorter(l, 0), shorter(l, s(0)), l) | | if(true, b, l) | → | s(0) |
| if(false, b, l) | → | if2(b, l) | | if2(true, l) | → | car(l) |
| if2(false, l) | → | prod(cons(times(car(l), cadr(l)), cddr(l))) |
Original Signature
Termination of terms over the following signature is verified: car, plus, cadr, iftimes, true, if2, cddr, ifplus, 0, s, times, if, p, false, shorter, isZero, nil, cons, prod
Strategy
Projection
The following projection was used:
Thus, the following dependency pairs are removed:
| shorter#(cons(x, l), s(y)) | → | shorter#(l, y) |