TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60234 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (346ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (121ms).
| | Problem 5 was processed with processor DependencyGraph (3ms).
| | | Problem 7 was processed with processor PolynomialLinearRange4 (18ms).
| | | | Problem 10 was processed with processor DependencyGraph (1ms).
| | | | | Problem 11 was processed with processor PolynomialLinearRange4 (13ms).
| | | | | Problem 12 was processed with processor PolynomialLinearRange4 (8ms).
| | | Problem 8 was processed with processor PolynomialLinearRange4 (8ms).
| Problem 3 was processed with processor PolynomialLinearRange4 (505ms).
| | Problem 6 was processed with processor DependencyGraph (1ms).
| | | Problem 9 was processed with processor PolynomialLinearRange4 (12ms).
| Problem 4 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (2ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (0ms), PolynomialOrderingProcessor (0ms), DependencyGraph (1ms), PolynomialLinearRange4 (129ms), DependencyGraph (1ms), PolynomialLinearRange4 (119ms), DependencyGraph (1ms), PolynomialLinearRange4 (124ms), DependencyGraph (1ms), PolynomialLinearRange4 (129ms), DependencyGraph (0ms), ReductionPairSAT (756ms), DependencyGraph (1ms), SizeChangePrinciple (timeout)].
The following open problems remain:
Open Dependency Pair Problem 4
Dependency Pairs
uLength#(tt, L) | → | length#(L) | | length#(cons(N, L)) | → | uLength#(and(isNat(N), isNatList(L)), L) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNat#(s(N)) | → | isNat#(N) | | isNat#(length(L)) | → | isNatList#(L) |
isNatIList#(cons(N, IL)) | → | and#(isNat(N), isNatIList(IL)) | | take#(s(M), cons(N, IL)) | → | uTake2#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2#(tt, M, N, IL) | → | T(N) | | take#(s(M), cons(N, IL)) | → | isNatIList#(IL) |
isNatList#(cons(N, L)) | → | isNat#(N) | | uLength#(tt, L) | → | length#(L) |
T(take(x_1, x_2)) | → | T(x_2) | | length#(cons(N, L)) | → | and#(isNat(N), isNatList(L)) |
isNatIList#(cons(N, IL)) | → | isNat#(N) | | T(zeros) | → | zeros# |
take#(s(M), cons(N, IL)) | → | and#(isNat(N), isNatIList(IL)) | | take#(s(M), cons(N, IL)) | → | isNat#(N) |
uLength#(tt, L) | → | T(L) | | isNatList#(take(N, IL)) | → | isNatIList#(IL) |
take#(s(M), cons(N, IL)) | → | isNat#(M) | | isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
isNatIList#(IL) | → | isNatList#(IL) | | T(take(x_1, x_2)) | → | T(x_1) |
length#(cons(N, L)) | → | uLength#(and(isNat(N), isNatList(L)), L) | | take#(s(M), cons(N, IL)) | → | and#(isNat(M), and(isNat(N), isNatIList(IL))) |
isNatList#(cons(N, L)) | → | isNatList#(L) | | isNatList#(take(N, IL)) | → | and#(isNat(N), isNatIList(IL)) |
take#(0, IL) | → | isNatIList#(IL) | | isNatList#(cons(N, L)) | → | and#(isNat(N), isNatList(L)) |
length#(cons(N, L)) | → | isNat#(N) | | isNatList#(take(N, IL)) | → | isNat#(N) |
take#(0, IL) | → | uTake1#(isNatIList(IL)) | | T(take(M, IL)) | → | take#(M, IL) |
length#(cons(N, L)) | → | isNatList#(L) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
The following SCCs where found
isNatList#(cons(N, L)) → isNat#(N) | isNat#(s(N)) → isNat#(N) |
isNat#(length(L)) → isNatList#(L) | isNatIList#(cons(N, IL)) → isNat#(N) |
isNatIList#(IL) → isNatList#(IL) | isNatList#(take(N, IL)) → isNat#(N) |
isNatList#(cons(N, L)) → isNatList#(L) | isNatList#(take(N, IL)) → isNatIList#(IL) |
isNatIList#(cons(N, IL)) → isNatIList#(IL) |
uLength#(tt, L) → length#(L) | length#(cons(N, L)) → uLength#(and(isNat(N), isNatList(L)), L) |
T(take(x_1, x_2)) → T(x_2) | take#(s(M), cons(N, IL)) → uTake2#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
T(take(x_1, x_2)) → T(x_1) | T(take(M, IL)) → take#(M, IL) |
uTake2#(tt, M, N, IL) → T(N) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatList#(cons(N, L)) | → | isNat#(N) | | isNat#(s(N)) | → | isNat#(N) |
isNat#(length(L)) | → | isNatList#(L) | | isNatIList#(cons(N, IL)) | → | isNat#(N) |
isNatIList#(IL) | → | isNatList#(IL) | | isNatList#(take(N, IL)) | → | isNat#(N) |
isNatList#(cons(N, L)) | → | isNatList#(L) | | isNatList#(take(N, IL)) | → | isNatIList#(IL) |
isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- and(x,y): 0
- cons(x,y): y + 2x
- isNat(x): 0
- isNat#(x): x
- isNatIList(x): 0
- isNatIList#(x): x + 1
- isNatList(x): 0
- isNatList#(x): x + 1
- length(x): x + 1
- nil: 0
- s(x): x
- take(x,y): y + x
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatList#(cons(N, L)) | → | isNat#(N) | | isNatIList#(cons(N, IL)) | → | isNat#(N) |
isNatList#(take(N, IL)) | → | isNat#(N) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNat#(s(N)) | → | isNat#(N) | | isNat#(length(L)) | → | isNatList#(L) |
isNatIList#(IL) | → | isNatList#(IL) | | isNatList#(cons(N, L)) | → | isNatList#(L) |
isNatList#(take(N, IL)) | → | isNatIList#(IL) | | isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
The following SCCs where found
isNatIList#(IL) → isNatList#(IL) | isNatList#(cons(N, L)) → isNatList#(L) |
isNatList#(take(N, IL)) → isNatIList#(IL) | isNatIList#(cons(N, IL)) → isNatIList#(IL) |
Problem 7: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatIList#(IL) | → | isNatList#(IL) | | isNatList#(cons(N, L)) | → | isNatList#(L) |
isNatList#(take(N, IL)) | → | isNatIList#(IL) | | isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- and(x,y): 0
- cons(x,y): y + 2x
- isNat(x): 0
- isNatIList(x): 0
- isNatIList#(x): 2x + 2
- isNatList(x): 0
- isNatList#(x): 2x
- length(x): 0
- nil: 0
- s(x): 0
- take(x,y): y + 1
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatIList#(IL) | → | isNatList#(IL) |
Problem 10: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatList#(cons(N, L)) | → | isNatList#(L) | | isNatList#(take(N, IL)) | → | isNatIList#(IL) |
isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
The following SCCs where found
isNatList#(cons(N, L)) → isNatList#(L) |
isNatIList#(cons(N, IL)) → isNatIList#(IL) |
Problem 11: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatList#(cons(N, L)) | → | isNatList#(L) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- and(x,y): 0
- cons(x,y): y + 1
- isNat(x): 0
- isNatIList(x): 0
- isNatList(x): 0
- isNatList#(x): x
- length(x): 0
- nil: 0
- s(x): 0
- take(x,y): 0
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatList#(cons(N, L)) | → | isNatList#(L) |
Problem 12: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- and(x,y): 0
- cons(x,y): y + 1
- isNat(x): 0
- isNatIList(x): 0
- isNatIList#(x): x
- isNatList(x): 0
- length(x): 0
- nil: 0
- s(x): 0
- take(x,y): 0
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatIList#(cons(N, IL)) | → | isNatIList#(IL) |
Problem 8: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- and(x,y): 0
- cons(x,y): 0
- isNat(x): 0
- isNat#(x): x + 1
- isNatIList(x): 0
- isNatList(x): 0
- length(x): 0
- nil: 0
- s(x): x + 1
- take(x,y): 0
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
Problem 3: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
T(take(x_1, x_2)) | → | T(x_2) | | take#(s(M), cons(N, IL)) | → | uTake2#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
T(take(x_1, x_2)) | → | T(x_1) | | T(take(M, IL)) | → | take#(M, IL) |
uTake2#(tt, M, N, IL) | → | T(N) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, nil, cons
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): 2x
- and(x,y): 2y
- cons(x,y): 2x
- isNat(x): 0
- isNatIList(x): 0
- isNatList(x): 0
- length(x): 2
- nil: 0
- s(x): 1
- take(x,y): y + 2x
- take#(x,y): 2y + 2x
- tt: 0
- uLength(x,y): 1
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 2x3
- uTake2#(x1,x2,x3,x4): 2x3
- zeros: 0
Standard Usable rules
isNat(length(L)) | → | isNatList(L) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uLength(tt, L) | → | s(length(L)) | | isNat(0) | → | tt |
isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
zeros | → | cons(0, zeros) | | isNatIList(IL) | → | isNatList(IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | and(tt, T) | → | T |
length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) | | isNat(s(N)) | → | isNat(N) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
take#(s(M), cons(N, IL)) | → | uTake2#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
Problem 6: DependencyGraph
Dependency Pair Problem
Dependency Pairs
T(take(x_1, x_2)) | → | T(x_2) | | T(take(x_1, x_2)) | → | T(x_1) |
T(take(M, IL)) | → | take#(M, IL) | | uTake2#(tt, M, N, IL) | → | T(N) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
The following SCCs where found
T(take(x_1, x_2)) → T(x_2) | T(take(x_1, x_2)) → T(x_1) |
Problem 9: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
T(take(x_1, x_2)) | → | T(x_2) | | T(take(x_1, x_2)) | → | T(x_1) |
Rewrite Rules
and(tt, T) | → | T | | isNatIList(IL) | → | isNatList(IL) |
isNat(0) | → | tt | | isNat(s(N)) | → | isNat(N) |
isNat(length(L)) | → | isNatList(L) | | isNatIList(zeros) | → | tt |
isNatIList(cons(N, IL)) | → | and(isNat(N), isNatIList(IL)) | | isNatList(nil) | → | tt |
isNatList(cons(N, L)) | → | and(isNat(N), isNatList(L)) | | isNatList(take(N, IL)) | → | and(isNat(N), isNatIList(IL)) |
zeros | → | cons(0, zeros) | | take(0, IL) | → | uTake1(isNatIList(IL)) |
uTake1(tt) | → | nil | | take(s(M), cons(N, IL)) | → | uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL) |
uTake2(tt, M, N, IL) | → | cons(N, take(M, IL)) | | length(cons(N, L)) | → | uLength(and(isNat(N), isNatList(L)), L) |
uLength(tt, L) | → | s(length(L)) |
Original Signature
Termination of terms over the following signature is verified: isNatIList, uLength, and, isNat, uTake1, uTake2, 0, isNatList, s, tt, zeros, take, length, cons, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(uLength#) = μ(length#) = μ(uTake2#) = μ(length) = μ(cons) = μ(uLength) = μ(uTake1#) = μ(uTake1) = μ(uTake2) = μ(s) = {1}
μ(and#) = μ(take#) = μ(and) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): 2x
- and(x,y): 0
- cons(x,y): 0
- isNat(x): 0
- isNatIList(x): 0
- isNatList(x): 0
- length(x): 0
- nil: 0
- s(x): 0
- take(x,y): y + 2x + 1
- tt: 0
- uLength(x,y): 0
- uTake1(x): 0
- uTake2(x1,x2,x3,x4): 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(take(x_1, x_2)) | → | T(x_2) | | T(take(x_1, x_2)) | → | T(x_1) |