YES
The TRS could be proven terminating. The proof took 1732 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (358ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (303ms).
| | Problem 5 was processed with processor DependencyGraph (7ms).
| | | Problem 8 was processed with processor PolynomialLinearRange4 (100ms).
| | | | Problem 10 was processed with processor DependencyGraph (5ms).
| | | | | Problem 11 was processed with processor PolynomialLinearRange4 (55ms).
| | | | | | Problem 13 was processed with processor DependencyGraph (0ms).
| | | | | Problem 12 was processed with processor PolynomialLinearRange4 (80ms).
| | | | | | Problem 14 was processed with processor DependencyGraph (0ms).
| Problem 3 was processed with processor PolynomialLinearRange4 (301ms).
| | Problem 6 was processed with processor DependencyGraph (0ms).
| Problem 4 was processed with processor PolynomialLinearRange4 (220ms).
| | Problem 7 was processed with processor DependencyGraph (4ms).
| | | Problem 9 was processed with processor PolynomialLinearRange4 (14ms).
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(V1, V2)) | → | isNat#(V1) | | U91#(tt, IL, M, N) | → | isNat#(M) |
isNat#(s(V1)) | → | isNat#(V1) | | isNatList#(cons(V1, V2)) | → | isNat#(V1) |
take#(s(M), cons(N, IL)) | → | isNatIList#(IL) | | U93#(tt, IL, M, N) | → | T(N) |
isNatList#(take(V1, V2)) | → | U61#(isNat(V1), V2) | | isNatIList#(V) | → | isNatList#(V) |
isNat#(length(V1)) | → | isNatList#(V1) | | U71#(tt, L, N) | → | U72#(isNat(N), L) |
U72#(tt, L) | → | T(L) | | U72#(tt, L) | → | length#(L) |
T(take(x_1, x_2)) | → | T(x_2) | | T(zeros) | → | zeros# |
U91#(tt, IL, M, N) | → | U92#(isNat(M), IL, M, N) | | isNatList#(take(V1, V2)) | → | isNat#(V1) |
isNat#(length(V1)) | → | U11#(isNatList(V1)) | | isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) |
take#(0, IL) | → | U81#(isNatIList(IL)) | | length#(cons(N, L)) | → | U71#(isNatList(L), L, N) |
take#(s(M), cons(N, IL)) | → | U91#(isNatIList(IL), IL, M, N) | | isNat#(s(V1)) | → | U21#(isNat(V1)) |
U71#(tt, L, N) | → | isNat#(N) | | U61#(tt, V2) | → | U62#(isNatIList(V2)) |
T(take(x_1, x_2)) | → | T(x_1) | | U41#(tt, V2) | → | U42#(isNatIList(V2)) |
U51#(tt, V2) | → | U52#(isNatList(V2)) | | U61#(tt, V2) | → | isNatIList#(V2) |
U92#(tt, IL, M, N) | → | U93#(isNat(N), IL, M, N) | | take#(0, IL) | → | isNatIList#(IL) |
U92#(tt, IL, M, N) | → | isNat#(N) | | isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) |
U51#(tt, V2) | → | isNatList#(V2) | | isNatIList#(V) | → | U31#(isNatList(V)) |
T(take(M, IL)) | → | take#(M, IL) | | length#(cons(N, L)) | → | isNatList#(L) |
U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
T(take(x_1, x_2)) → T(x_2) | U91#(tt, IL, M, N) → U92#(isNat(M), IL, M, N) |
T(take(x_1, x_2)) → T(x_1) | T(take(M, IL)) → take#(M, IL) |
U92#(tt, IL, M, N) → U93#(isNat(N), IL, M, N) | take#(s(M), cons(N, IL)) → U91#(isNatIList(IL), IL, M, N) |
U93#(tt, IL, M, N) → T(N) |
U71#(tt, L, N) → U72#(isNat(N), L) | U72#(tt, L) → length#(L) |
length#(cons(N, L)) → U71#(isNatList(L), L, N) |
isNat#(length(V1)) → isNatList#(V1) | isNatIList#(V) → isNatList#(V) |
isNatIList#(cons(V1, V2)) → isNat#(V1) | isNat#(s(V1)) → isNat#(V1) |
isNatList#(cons(V1, V2)) → U51#(isNat(V1), V2) | isNatList#(cons(V1, V2)) → isNat#(V1) |
isNatList#(take(V1, V2)) → isNat#(V1) | U61#(tt, V2) → isNatIList#(V2) |
isNatIList#(cons(V1, V2)) → U41#(isNat(V1), V2) | U51#(tt, V2) → isNatList#(V2) |
isNatList#(take(V1, V2)) → U61#(isNat(V1), V2) | U41#(tt, V2) → isNatIList#(V2) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNat#(length(V1)) | → | isNatList#(V1) | | isNatIList#(V) | → | isNatList#(V) |
isNatIList#(cons(V1, V2)) | → | isNat#(V1) | | isNat#(s(V1)) | → | isNat#(V1) |
isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) | | isNatList#(cons(V1, V2)) | → | isNat#(V1) |
isNatList#(take(V1, V2)) | → | isNat#(V1) | | isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) |
U51#(tt, V2) | → | isNatList#(V2) | | U61#(tt, V2) | → | isNatIList#(V2) |
U41#(tt, V2) | → | isNatIList#(V2) | | isNatList#(take(V1, V2)) | → | U61#(isNat(V1), V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 1
- U11(x): 0
- U21(x): x
- U31(x): 0
- U41(x,y): 1
- U41#(x,y): 3y + 2x
- U42(x): 0
- U51(x,y): y + 2
- U51#(x,y): 2y + 2x
- U52(x): 0
- U61(x,y): 0
- U61#(x,y): 2y + 2x
- U62(x): 0
- U71(x,y,z): 0
- U72(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- U92(x1,x2,x3,x4): 0
- U93(x1,x2,x3,x4): 0
- cons(x,y): 2y + x + 1
- isNat(x): 1
- isNat#(x): x
- isNatIList(x): 3
- isNatIList#(x): 2x
- isNatList(x): 2x + 1
- isNatList#(x): 2x
- length(x): 3x
- nil: 0
- s(x): 2x + 2
- take(x,y): y + x + 1
- tt: 0
- zeros: 0
Standard Usable rules
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | U51(tt, V2) | → | U52(isNatList(V2)) |
isNat(length(V1)) | → | U11(isNatList(V1)) | | U31(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | isNat(s(V1)) | → | U21(isNat(V1)) |
U42(tt) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatIList(V) | → | U31(isNatList(V)) | | U21(tt) | → | tt |
U62(tt) | → | tt | | U52(tt) | → | tt |
isNatIList(zeros) | → | tt | | U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatIList#(cons(V1, V2)) | → | isNat#(V1) | | isNat#(s(V1)) | → | isNat#(V1) |
isNatList#(cons(V1, V2)) | → | isNat#(V1) | | isNatList#(take(V1, V2)) | → | isNat#(V1) |
Problem 5: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatIList#(V) | → | isNatList#(V) | | isNat#(length(V1)) | → | isNatList#(V1) |
isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) | | U61#(tt, V2) | → | isNatIList#(V2) |
U51#(tt, V2) | → | isNatList#(V2) | | isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) |
isNatList#(take(V1, V2)) | → | U61#(isNat(V1), V2) | | U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
isNatIList#(V) → isNatList#(V) | isNatList#(cons(V1, V2)) → U51#(isNat(V1), V2) |
U51#(tt, V2) → isNatList#(V2) | U61#(tt, V2) → isNatIList#(V2) |
isNatIList#(cons(V1, V2)) → U41#(isNat(V1), V2) | isNatList#(take(V1, V2)) → U61#(isNat(V1), V2) |
U41#(tt, V2) → isNatIList#(V2) |
Problem 8: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatIList#(V) | → | isNatList#(V) | | isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) |
U51#(tt, V2) | → | isNatList#(V2) | | U61#(tt, V2) | → | isNatIList#(V2) |
isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) | | isNatList#(take(V1, V2)) | → | U61#(isNat(V1), V2) |
U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 1
- U11(x): 0
- U21(x): 0
- U31(x): 1
- U41(x,y): y + 1
- U41#(x,y): 2y
- U42(x): x
- U51(x,y): 0
- U51#(x,y): 3y
- U52(x): 0
- U61(x,y): 2y + 2
- U61#(x,y): 2y
- U62(x): 2
- U71(x,y,z): 0
- U72(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- U92(x1,x2,x3,x4): 0
- U93(x1,x2,x3,x4): 0
- cons(x,y): 2y
- isNat(x): 2x
- isNatIList(x): x + 1
- isNatIList#(x): 2x
- isNatList(x): 3x
- isNatList#(x): 2x
- length(x): 0
- nil: 0
- s(x): 0
- take(x,y): y + 1
- tt: 0
- zeros: 2
Standard Usable rules
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | U51(tt, V2) | → | U52(isNatList(V2)) |
isNat(length(V1)) | → | U11(isNatList(V1)) | | U31(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | isNat(s(V1)) | → | U21(isNat(V1)) |
U42(tt) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatIList(V) | → | U31(isNatList(V)) | | U21(tt) | → | tt |
U62(tt) | → | tt | | U52(tt) | → | tt |
isNatIList(zeros) | → | tt | | U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatList#(take(V1, V2)) | → | U61#(isNat(V1), V2) |
Problem 10: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatIList#(V) | → | isNatList#(V) | | isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) |
isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) | | U61#(tt, V2) | → | isNatIList#(V2) |
U51#(tt, V2) | → | isNatList#(V2) | | U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
isNatIList#(cons(V1, V2)) → U41#(isNat(V1), V2) | U41#(tt, V2) → isNatIList#(V2) |
isNatList#(cons(V1, V2)) → U51#(isNat(V1), V2) | U51#(tt, V2) → isNatList#(V2) |
Problem 11: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) | | U51#(tt, V2) | → | isNatList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 1
- U11(x): 0
- U21(x): x + 1
- U31(x): 1
- U41(x,y): 0
- U42(x): 0
- U51(x,y): 2
- U51#(x,y): 2y
- U52(x): 1
- U61(x,y): 2
- U62(x): x
- U71(x,y,z): 0
- U72(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- U92(x1,x2,x3,x4): 0
- U93(x1,x2,x3,x4): 0
- cons(x,y): 2y + 1
- isNat(x): 2x
- isNatIList(x): 1
- isNatList(x): 2x + 1
- isNatList#(x): 2x
- length(x): 1
- nil: 1
- s(x): x + 1
- take(x,y): 3x + 1
- tt: 0
- zeros: 3
Standard Usable rules
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | U51(tt, V2) | → | U52(isNatList(V2)) |
isNat(length(V1)) | → | U11(isNatList(V1)) | | U31(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | isNat(s(V1)) | → | U21(isNat(V1)) |
U42(tt) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatIList(V) | → | U31(isNatList(V)) | | U21(tt) | → | tt |
U62(tt) | → | tt | | U52(tt) | → | tt |
isNatIList(zeros) | → | tt | | U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatList#(cons(V1, V2)) | → | U51#(isNat(V1), V2) |
Problem 13: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U51#(tt, V2) | → | isNatList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
Problem 12: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) | | U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 3
- U11(x): 0
- U21(x): 0
- U31(x): 0
- U41(x,y): y + 3
- U41#(x,y): y
- U42(x): x
- U51(x,y): 1
- U52(x): 0
- U61(x,y): 1
- U62(x): 1
- U71(x,y,z): 0
- U72(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- U92(x1,x2,x3,x4): 0
- U93(x1,x2,x3,x4): 0
- cons(x,y): y + 3
- isNat(x): 0
- isNatIList(x): x
- isNatIList#(x): x
- isNatList(x): 1
- length(x): 2
- nil: 3
- s(x): 3x + 3
- take(x,y): 3y + 3x + 3
- tt: 0
- zeros: 0
Standard Usable rules
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | U51(tt, V2) | → | U52(isNatList(V2)) |
isNat(length(V1)) | → | U11(isNatList(V1)) | | U31(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | isNat(s(V1)) | → | U21(isNat(V1)) |
U42(tt) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatIList(V) | → | U31(isNatList(V)) | | U21(tt) | → | tt |
U62(tt) | → | tt | | U52(tt) | → | tt |
isNatIList(zeros) | → | tt | | U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatIList#(cons(V1, V2)) | → | U41#(isNat(V1), V2) |
Problem 14: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U41#(tt, V2) | → | isNatIList#(V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
Problem 3: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U71#(tt, L, N) | → | U72#(isNat(N), L) | | U72#(tt, L) | → | length#(L) |
length#(cons(N, L)) | → | U71#(isNatList(L), L, N) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 1
- U11(x): x
- U21(x): x
- U31(x): 1
- U41(x,y): 2
- U42(x): 1
- U51(x,y): 2y
- U52(x): x
- U61(x,y): x
- U62(x): 1
- U71(x,y,z): 3y
- U71#(x,y,z): 3y + 2x
- U72(x,y): 3y
- U72#(x,y): 3y + 2
- U81(x): 1
- U91(x1,x2,x3,x4): 3x3
- U92(x1,x2,x3,x4): 3x3
- U93(x1,x2,x3,x4): 3x3
- cons(x,y): 3y
- isNat(x): 2x
- isNatIList(x): 2
- isNatList(x): 2x
- length(x): x
- length#(x): 3x
- nil: 1
- s(x): 3x
- take(x,y): x
- tt: 1
- zeros: 0
Standard Usable rules
U51(tt, V2) | → | U52(isNatList(V2)) | | U61(tt, V2) | → | U62(isNatIList(V2)) |
U31(tt) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | U71(tt, L, N) | → | U72(isNat(N), L) |
isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) | | take(0, IL) | → | U81(isNatIList(IL)) |
U21(tt) | → | tt | | U62(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | zeros | → | cons(0, zeros) |
isNat(s(V1)) | → | U21(isNat(V1)) | | U42(tt) | → | tt |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNatIList(V) | → | U31(isNatList(V)) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U52(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
Problem 6: DependencyGraph
Dependency Pair Problem
Dependency Pairs
U71#(tt, L, N) | → | U72#(isNat(N), L) | | length#(cons(N, L)) | → | U71#(isNatList(L), L, N) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
Problem 4: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
T(take(x_1, x_2)) | → | T(x_2) | | U91#(tt, IL, M, N) | → | U92#(isNat(M), IL, M, N) |
T(take(x_1, x_2)) | → | T(x_1) | | T(take(M, IL)) | → | take#(M, IL) |
U92#(tt, IL, M, N) | → | U93#(isNat(N), IL, M, N) | | take#(s(M), cons(N, IL)) | → | U91#(isNatIList(IL), IL, M, N) |
U93#(tt, IL, M, N) | → | T(N) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U93, U42, U92, U41, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 2
- T(x): 2x
- U11(x): 0
- U21(x): 0
- U31(x): 1
- U41(x,y): 0
- U42(x): 0
- U51(x,y): 1
- U52(x): 0
- U61(x,y): 1
- U62(x): 0
- U71(x,y,z): z + x + 1
- U72(x,y): 1
- U81(x): 1
- U91(x1,x2,x3,x4): x4 + 2
- U91#(x1,x2,x3,x4): 2x4 + x1 + 1
- U92(x1,x2,x3,x4): x4 + 1
- U92#(x1,x2,x3,x4): 2x4
- U93(x1,x2,x3,x4): x4 + 1
- U93#(x1,x2,x3,x4): 2x4
- cons(x,y): x + 1
- isNat(x): 0
- isNatIList(x): 1
- isNatList(x): 2
- length(x): 2x + 1
- nil: 1
- s(x): 1
- take(x,y): y + x
- take#(x,y): 2y
- tt: 0
- zeros: 3
Standard Usable rules
U51(tt, V2) | → | U52(isNatList(V2)) | | U61(tt, V2) | → | U62(isNatIList(V2)) |
U31(tt) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) | | take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | U71(tt, L, N) | → | U72(isNat(N), L) |
isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) | | take(0, IL) | → | U81(isNatIList(IL)) |
U21(tt) | → | tt | | U62(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U11(tt) | → | tt | | isNat(0) | → | tt |
isNatList(nil) | → | tt | | zeros | → | cons(0, zeros) |
isNat(s(V1)) | → | U21(isNat(V1)) | | U42(tt) | → | tt |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNatIList(V) | → | U31(isNatList(V)) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U52(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U91#(tt, IL, M, N) | → | U92#(isNat(M), IL, M, N) |
Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
T(take(x_1, x_2)) | → | T(x_2) | | T(take(x_1, x_2)) | → | T(x_1) |
U92#(tt, IL, M, N) | → | U93#(isNat(N), IL, M, N) | | T(take(M, IL)) | → | take#(M, IL) |
U93#(tt, IL, M, N) | → | T(N) | | take#(s(M), cons(N, IL)) | → | U91#(isNatIList(IL), IL, M, N) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(tt) = μ(zeros) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U91#) = μ(U21#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U42#) = μ(U72) = μ(U71#) = μ(U51) = μ(s) = μ(U81) = μ(U52) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(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
zeros | → | cons(0, zeros) | | U11(tt) | → | tt |
U21(tt) | → | tt | | U31(tt) | → | tt |
U41(tt, V2) | → | U42(isNatIList(V2)) | | U42(tt) | → | tt |
U51(tt, V2) | → | U52(isNatList(V2)) | | U52(tt) | → | tt |
U61(tt, V2) | → | U62(isNatIList(V2)) | | U62(tt) | → | tt |
U71(tt, L, N) | → | U72(isNat(N), L) | | U72(tt, L) | → | s(length(L)) |
U81(tt) | → | nil | | U91(tt, IL, M, N) | → | U92(isNat(M), IL, M, N) |
U92(tt, IL, M, N) | → | U93(isNat(N), IL, M, N) | | U93(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNat(length(V1)) | → | U11(isNatList(V1)) |
isNat(s(V1)) | → | U21(isNat(V1)) | | isNatIList(V) | → | U31(isNatList(V)) |
isNatIList(zeros) | → | tt | | isNatIList(cons(V1, V2)) | → | U41(isNat(V1), V2) |
isNatList(nil) | → | tt | | isNatList(cons(V1, V2)) | → | U51(isNat(V1), V2) |
isNatList(take(V1, V2)) | → | U61(isNat(V1), V2) | | length(nil) | → | 0 |
length(cons(N, L)) | → | U71(isNatList(L), L, N) | | take(0, IL) | → | U81(isNatIList(IL)) |
take(s(M), cons(N, IL)) | → | U91(isNatIList(IL), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNat, U62, U61, U42, U93, U41, U92, U91, length, U21, cons, isNatIList, U71, U72, 0, U51, isNatList, s, tt, zeros, take, U52, U81, U11, U31, nil
Strategy
Context-sensitive strategy:
μ(isNatList#) = μ(zeros#) = μ(isNat) = μ(T) = μ(isNatIList) = μ(isNatIList#) = μ(0) = μ(isNatList) = μ(zeros) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U93#) = μ(U11#) = μ(U31#) = μ(length#) = μ(U21#) = μ(U91#) = μ(U81#) = μ(U62#) = μ(U52#) = μ(U41#) = μ(U62) = μ(U61) = μ(U93) = μ(U42) = μ(U92) = μ(U41) = μ(U72#) = μ(U91) = μ(length) = μ(U21) = μ(cons) = μ(U92#) = μ(U61#) = μ(U51#) = μ(U71) = μ(U72) = μ(U42#) = μ(U71#) = μ(s) = μ(U51) = μ(U52) = μ(U81) = μ(U11) = μ(U31) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): x
- U11(x): 0
- U21(x): 0
- U31(x): 0
- U41(x,y): 0
- U42(x): 0
- U51(x,y): 0
- U52(x): 0
- U61(x,y): 0
- U62(x): 0
- U71(x,y,z): 0
- U72(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- U92(x1,x2,x3,x4): 0
- U93(x1,x2,x3,x4): 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 + x + 2
- tt: 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) |