YES
 
The TRS could be proven terminating. The proof took 4618 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (1773ms).
 |  Problem 2 was processed with processor PolynomialLinearRange4 (230ms).
 |    |  Problem 6 was processed with processor PolynomialLinearRange4 (42ms).
 |    |    |  Problem 11 was processed with processor DependencyGraph (5ms).
 |    |    |    |  Problem 13 was processed with processor PolynomialLinearRange4 (40ms).
 |    |    |    |    |  Problem 14 was processed with processor DependencyGraph (1ms).
 |  Problem 3 was processed with processor PolynomialLinearRange4 (776ms).
 |    |  Problem 7 was processed with processor DependencyGraph (2ms).
 |  Problem 4 was processed with processor PolynomialLinearRange4 (409ms).
 |    |  Problem 8 was processed with processor DependencyGraph (7ms).
 |  Problem 5 was processed with processor PolynomialLinearRange4 (575ms).
 |    |  Problem 9 was processed with processor DependencyGraph (67ms).
 |    |    |  Problem 10 was processed with processor PolynomialLinearRange4 (39ms).
 |    |    |    |  Problem 12 was processed with processor DependencyGraph (1ms).
 Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U95#(tt, V2) |  →  | isNatList#(V2) |  | U105#(tt, V2) |  →  | U106#(isNatIList(V2)) | 
| isNatIList#(cons(V1, V2)) |  →  | isNatKind#(V1) |  | U111#(tt, L, N) |  →  | isNatIListKind#(L) | 
| U45#(tt, V2) |  →  | isNatIList#(V2) |  | U91#(tt, V1, V2) |  →  | U92#(isNatKind(V1), V1, V2) | 
| isNatKind#(length(V1)) |  →  | isNatIListKind#(V1) |  | U11#(tt, V1) |  →  | isNatIListKind#(V1) | 
| U102#(tt, V1, V2) |  →  | U103#(isNatIListKind(V2), V1, V2) |  | U113#(tt, L, N) |  →  | isNatKind#(N) | 
| U32#(tt, V) |  →  | isNatList#(V) |  | isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) | 
| U103#(tt, V1, V2) |  →  | isNatIListKind#(V2) |  | U136#(tt, IL, M, N) |  →  | T(N) | 
| isNatIList#(V) |  →  | U31#(isNatIListKind(V), V) |  | T(zeros) |  →  | zeros# | 
| U105#(tt, V2) |  →  | isNatIList#(V2) |  | U43#(tt, V1, V2) |  →  | isNatIListKind#(V2) | 
| U42#(tt, V1, V2) |  →  | U43#(isNatIListKind(V2), V1, V2) |  | U101#(tt, V1, V2) |  →  | U102#(isNatKind(V1), V1, V2) | 
| U93#(tt, V1, V2) |  →  | U94#(isNatIListKind(V2), V1, V2) |  | isNatList#(take(V1, V2)) |  →  | isNatKind#(V1) | 
| T(take(x_1, x_2)) |  →  | T(x_1) |  | U61#(tt, V2) |  →  | isNatIListKind#(V2) | 
| isNat#(length(V1)) |  →  | U11#(isNatIListKind(V1), V1) |  | U94#(tt, V1, V2) |  →  | isNat#(V1) | 
| isNatIListKind#(cons(V1, V2)) |  →  | isNatKind#(V1) |  | isNatIList#(V) |  →  | isNatIListKind#(V) | 
| U111#(tt, L, N) |  →  | U112#(isNatIListKind(L), L, N) |  | isNatKind#(length(V1)) |  →  | U71#(isNatIListKind(V1)) | 
| U95#(tt, V2) |  →  | U96#(isNatList(V2)) |  | isNatList#(take(V1, V2)) |  →  | U101#(isNatKind(V1), V1, V2) | 
| U133#(tt, IL, M, N) |  →  | isNatKind#(M) |  | U102#(tt, V1, V2) |  →  | isNatIListKind#(V2) | 
| U21#(tt, V1) |  →  | U22#(isNatKind(V1), V1) |  | isNatIListKind#(take(V1, V2)) |  →  | isNatKind#(V1) | 
| U31#(tt, V) |  →  | U32#(isNatIListKind(V), V) |  | U134#(tt, IL, M, N) |  →  | U135#(isNat(N), IL, M, N) | 
| length#(cons(N, L)) |  →  | U111#(isNatList(L), L, N) |  | isNatList#(cons(V1, V2)) |  →  | U91#(isNatKind(V1), V1, V2) | 
| U121#(tt, IL) |  →  | isNatIListKind#(IL) |  | U61#(tt, V2) |  →  | U62#(isNatIListKind(V2)) | 
| isNatKind#(s(V1)) |  →  | U81#(isNatKind(V1)) |  | U135#(tt, IL, M, N) |  →  | isNatKind#(N) | 
| U94#(tt, V1, V2) |  →  | U95#(isNat(V1), V2) |  | isNat#(s(V1)) |  →  | isNatKind#(V1) | 
| isNat#(s(V1)) |  →  | U21#(isNatKind(V1), V1) |  | U93#(tt, V1, V2) |  →  | isNatIListKind#(V2) | 
| U104#(tt, V1, V2) |  →  | isNat#(V1) |  | U41#(tt, V1, V2) |  →  | isNatKind#(V1) | 
| U121#(tt, IL) |  →  | U122#(isNatIListKind(IL)) |  | isNatKind#(s(V1)) |  →  | isNatKind#(V1) | 
| U92#(tt, V1, V2) |  →  | U93#(isNatIListKind(V2), V1, V2) |  | U112#(tt, L, N) |  →  | isNat#(N) | 
| U41#(tt, V1, V2) |  →  | U42#(isNatKind(V1), V1, V2) |  | isNatList#(cons(V1, V2)) |  →  | isNatKind#(V1) | 
| U113#(tt, L, N) |  →  | U114#(isNatKind(N), L) |  | U22#(tt, V1) |  →  | U23#(isNat(V1)) | 
| U31#(tt, V) |  →  | isNatIListKind#(V) |  | U112#(tt, L, N) |  →  | U113#(isNat(N), L, N) | 
| U114#(tt, L) |  →  | T(L) |  | U134#(tt, IL, M, N) |  →  | isNat#(N) | 
| isNat#(length(V1)) |  →  | isNatIListKind#(V1) |  | U43#(tt, V1, V2) |  →  | U44#(isNatIListKind(V2), V1, V2) | 
| take#(s(M), cons(N, IL)) |  →  | U131#(isNatIList(IL), IL, M, N) |  | U42#(tt, V1, V2) |  →  | isNatIListKind#(V2) | 
| U21#(tt, V1) |  →  | isNatKind#(V1) |  | U132#(tt, IL, M, N) |  →  | U133#(isNat(M), IL, M, N) | 
| take#(0, IL) |  →  | isNatIList#(IL) |  | U131#(tt, IL, M, N) |  →  | isNatIListKind#(IL) | 
| T(take(M, IL)) |  →  | take#(M, IL) |  | U44#(tt, V1, V2) |  →  | isNat#(V1) | 
| U91#(tt, V1, V2) |  →  | isNatKind#(V1) |  | U114#(tt, L) |  →  | length#(L) | 
| U51#(tt, V2) |  →  | U52#(isNatIListKind(V2)) |  | U131#(tt, IL, M, N) |  →  | U132#(isNatIListKind(IL), IL, M, N) | 
| U22#(tt, V1) |  →  | isNat#(V1) |  | U132#(tt, IL, M, N) |  →  | isNat#(M) | 
| take#(s(M), cons(N, IL)) |  →  | isNatIList#(IL) |  | U45#(tt, V2) |  →  | U46#(isNatIList(V2)) | 
| isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) |  | T(take(x_1, x_2)) |  →  | T(x_2) | 
| take#(0, IL) |  →  | U121#(isNatIList(IL), IL) |  | U12#(tt, V1) |  →  | isNatList#(V1) | 
| U135#(tt, IL, M, N) |  →  | U136#(isNatKind(N), IL, M, N) |  | U51#(tt, V2) |  →  | isNatIListKind#(V2) | 
| U101#(tt, V1, V2) |  →  | isNatKind#(V1) |  | U32#(tt, V) |  →  | U33#(isNatList(V)) | 
| U11#(tt, V1) |  →  | U12#(isNatIListKind(V1), V1) |  | isNatIList#(cons(V1, V2)) |  →  | U41#(isNatKind(V1), V1, V2) | 
| U133#(tt, IL, M, N) |  →  | U134#(isNatKind(M), IL, M, N) |  | U12#(tt, V1) |  →  | U13#(isNatList(V1)) | 
| U92#(tt, V1, V2) |  →  | isNatIListKind#(V2) |  | U44#(tt, V1, V2) |  →  | U45#(isNat(V1), V2) | 
| U103#(tt, V1, V2) |  →  | U104#(isNatIListKind(V2), V1, V2) |  | length#(cons(N, L)) |  →  | isNatList#(L) | 
| U104#(tt, V1, V2) |  →  | U105#(isNat(V1), V2) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
| length#(cons(N, L)) → U111#(isNatList(L), L, N) | U114#(tt, L) → length#(L) | 
| U112#(tt, L, N) → U113#(isNat(N), L, N) | U113#(tt, L, N) → U114#(isNatKind(N), L) | 
| U111#(tt, L, N) → U112#(isNatIListKind(L), L, N) | 
| isNatKind#(s(V1)) → isNatKind#(V1) | isNatIListKind#(cons(V1, V2)) → U51#(isNatKind(V1), V2) | 
| U51#(tt, V2) → isNatIListKind#(V2) | isNatIListKind#(take(V1, V2)) → U61#(isNatKind(V1), V2) | 
| isNatKind#(length(V1)) → isNatIListKind#(V1) | U61#(tt, V2) → isNatIListKind#(V2) | 
| isNatIListKind#(cons(V1, V2)) → isNatKind#(V1) | isNatIListKind#(take(V1, V2)) → isNatKind#(V1) | 
| U95#(tt, V2) → isNatList#(V2) | U94#(tt, V1, V2) → U95#(isNat(V1), V2) | 
| isNatList#(take(V1, V2)) → U101#(isNatKind(V1), V1, V2) | U45#(tt, V2) → isNatIList#(V2) | 
| isNat#(s(V1)) → U21#(isNatKind(V1), V1) | U22#(tt, V1) → isNat#(V1) | 
| U91#(tt, V1, V2) → U92#(isNatKind(V1), V1, V2) | U104#(tt, V1, V2) → isNat#(V1) | 
| U21#(tt, V1) → U22#(isNatKind(V1), V1) | U102#(tt, V1, V2) → U103#(isNatIListKind(V2), V1, V2) | 
| U31#(tt, V) → U32#(isNatIListKind(V), V) | U32#(tt, V) → isNatList#(V) | 
| U92#(tt, V1, V2) → U93#(isNatIListKind(V2), V1, V2) | isNatIList#(V) → U31#(isNatIListKind(V), V) | 
| U105#(tt, V2) → isNatIList#(V2) | U41#(tt, V1, V2) → U42#(isNatKind(V1), V1, V2) | 
| U12#(tt, V1) → isNatList#(V1) | isNatList#(cons(V1, V2)) → U91#(isNatKind(V1), V1, V2) | 
| U42#(tt, V1, V2) → U43#(isNatIListKind(V2), V1, V2) | U101#(tt, V1, V2) → U102#(isNatKind(V1), V1, V2) | 
| U93#(tt, V1, V2) → U94#(isNatIListKind(V2), V1, V2) | isNatIList#(cons(V1, V2)) → U41#(isNatKind(V1), V1, V2) | 
| U11#(tt, V1) → U12#(isNatIListKind(V1), V1) | U43#(tt, V1, V2) → U44#(isNatIListKind(V2), V1, V2) | 
| isNat#(length(V1)) → U11#(isNatIListKind(V1), V1) | U44#(tt, V1, V2) → U45#(isNat(V1), V2) | 
| U94#(tt, V1, V2) → isNat#(V1) | U103#(tt, V1, V2) → U104#(isNatIListKind(V2), V1, V2) | 
| U44#(tt, V1, V2) → isNat#(V1) | U104#(tt, V1, V2) → U105#(isNat(V1), V2) | 
| U134#(tt, IL, M, N) → U135#(isNat(N), IL, M, N) | U135#(tt, IL, M, N) → U136#(isNatKind(N), IL, M, N) | 
| T(take(x_1, x_2)) → T(x_2) | U136#(tt, IL, M, N) → T(N) | 
| U131#(tt, IL, M, N) → U132#(isNatIListKind(IL), IL, M, N) | T(take(x_1, x_2)) → T(x_1) | 
| U133#(tt, IL, M, N) → U134#(isNatKind(M), IL, M, N) | T(take(M, IL)) → take#(M, IL) | 
| take#(s(M), cons(N, IL)) → U131#(isNatIList(IL), IL, M, N) | U132#(tt, IL, M, N) → U133#(isNat(M), IL, M, N) | 
 
 Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| isNatKind#(s(V1)) |  →  | isNatKind#(V1) |  | isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) | 
| U51#(tt, V2) |  →  | isNatIListKind#(V2) |  | isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) | 
| isNatKind#(length(V1)) |  →  | isNatIListKind#(V1) |  | U61#(tt, V2) |  →  | isNatIListKind#(V2) | 
| isNatIListKind#(cons(V1, V2)) |  →  | isNatKind#(V1) |  | isNatIListKind#(take(V1, V2)) |  →  | isNatKind#(V1) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
 
- U101(x,y,z): 0
 
- U102(x,y,z): 0
 
- U103(x,y,z): 0
 
- U104(x,y,z): 0
 
- U105(x,y): 0
 
- U106(x): 0
 
- U11(x,y): 0
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): 0
 
- U121(x,y): 0
 
- U122(x): 0
 
- U13(x): 0
 
- U131(x1,x2,x3,x4): 0
 
- U132(x1,x2,x3,x4): 0
 
- U133(x1,x2,x3,x4): 0
 
- U134(x1,x2,x3,x4): 0
 
- U135(x1,x2,x3,x4): 0
 
- U136(x1,x2,x3,x4): 0
 
- U21(x,y): 0
 
- U22(x,y): 0
 
- U23(x): 0
 
- U31(x,y): 0
 
- U32(x,y): 0
 
- U33(x): 0
 
- U41(x,y,z): 0
 
- U42(x,y,z): 0
 
- U43(x,y,z): 0
 
- U44(x,y,z): 0
 
- U45(x,y): 0
 
- U46(x): 0
 
- U51(x,y): 1
 
- U51#(x,y): 3y
 
- U52(x): x
 
- U61(x,y): 0
 
- U61#(x,y): y + x
 
- U62(x): 0
 
- U71(x): 2
 
- U81(x): x
 
- U91(x,y,z): 0
 
- U92(x,y,z): 0
 
- U93(x,y,z): 0
 
- U94(x,y,z): 0
 
- U95(x,y): 0
 
- U96(x): 0
 
- cons(x,y): 3y + 2x
 
- isNat(x): 0
 
- isNatIList(x): 0
 
- isNatIListKind(x): 1
 
- isNatIListKind#(x): x
 
- isNatKind(x): 2
 
- isNatKind#(x): x
 
- isNatList(x): 0
 
- length(x): x
 
- nil: 3
 
- s(x): x + 2
 
- take(x,y): y + 2x + 2
 
- tt: 0
 
- zeros: 3
 
Standard Usable rules
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| U52(tt) |  →  | tt |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| isNatIListKind(zeros) |  →  | tt | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| isNatKind#(s(V1)) |  →  | isNatKind#(V1) |  | isNatIListKind#(take(V1, V2)) |  →  | isNatKind#(V1) | 
 
 Problem 6: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) |  | isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) | 
| U51#(tt, V2) |  →  | isNatIListKind#(V2) |  | isNatKind#(length(V1)) |  →  | isNatIListKind#(V1) | 
| U61#(tt, V2) |  →  | isNatIListKind#(V2) |  | isNatIListKind#(cons(V1, V2)) |  →  | isNatKind#(V1) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 3
 
- U101(x,y,z): 0
 
- U102(x,y,z): 0
 
- U103(x,y,z): 0
 
- U104(x,y,z): 0
 
- U105(x,y): 0
 
- U106(x): 0
 
- U11(x,y): 0
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): 0
 
- U121(x,y): 0
 
- U122(x): 0
 
- U13(x): 0
 
- U131(x1,x2,x3,x4): 0
 
- U132(x1,x2,x3,x4): 0
 
- U133(x1,x2,x3,x4): 0
 
- U134(x1,x2,x3,x4): 0
 
- U135(x1,x2,x3,x4): 0
 
- U136(x1,x2,x3,x4): 0
 
- U21(x,y): 0
 
- U22(x,y): 0
 
- U23(x): 0
 
- U31(x,y): 0
 
- U32(x,y): 0
 
- U33(x): 0
 
- U41(x,y,z): 0
 
- U42(x,y,z): 0
 
- U43(x,y,z): 0
 
- U44(x,y,z): 0
 
- U45(x,y): 0
 
- U46(x): 0
 
- U51(x,y): 3y + 2x
 
- U51#(x,y): 2y + 2x
 
- U52(x): 0
 
- U61(x,y): y
 
- U61#(x,y): 2y
 
- U62(x): 0
 
- U71(x): 1
 
- U81(x): x
 
- U91(x,y,z): 0
 
- U92(x,y,z): 0
 
- U93(x,y,z): 0
 
- U94(x,y,z): 0
 
- U95(x,y): 0
 
- U96(x): 0
 
- cons(x,y): 2y + 2x + 1
 
- isNat(x): 0
 
- isNatIList(x): 0
 
- isNatIListKind(x): 2x
 
- isNatIListKind#(x): 2x
 
- isNatKind(x): 1
 
- isNatKind#(x): 2x + 2
 
- isNatList(x): 0
 
- length(x): 2x
 
- nil: 0
 
- s(x): 3x + 3
 
- take(x,y): y + 2x
 
- tt: 0
 
- zeros: 0
 
Standard Usable rules
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| U52(tt) |  →  | tt |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| isNatIListKind(zeros) |  →  | tt | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| isNatKind#(length(V1)) |  →  | isNatIListKind#(V1) | 
 
 Problem 11: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) |  | U51#(tt, V2) |  →  | isNatIListKind#(V2) | 
| isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) |  | U61#(tt, V2) |  →  | isNatIListKind#(V2) | 
| isNatIListKind#(cons(V1, V2)) |  →  | isNatKind#(V1) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
| isNatIListKind#(cons(V1, V2)) → U51#(isNatKind(V1), V2) | U51#(tt, V2) → isNatIListKind#(V2) | 
| isNatIListKind#(take(V1, V2)) → U61#(isNatKind(V1), V2) | U61#(tt, V2) → isNatIListKind#(V2) | 
 
 Problem 13: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) |  | U51#(tt, V2) |  →  | isNatIListKind#(V2) | 
| isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) |  | U61#(tt, V2) |  →  | isNatIListKind#(V2) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 3
 
- U101(x,y,z): 0
 
- U102(x,y,z): 0
 
- U103(x,y,z): 0
 
- U104(x,y,z): 0
 
- U105(x,y): 0
 
- U106(x): 0
 
- U11(x,y): 0
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): 0
 
- U121(x,y): 0
 
- U122(x): 0
 
- U13(x): 0
 
- U131(x1,x2,x3,x4): 0
 
- U132(x1,x2,x3,x4): 0
 
- U133(x1,x2,x3,x4): 0
 
- U134(x1,x2,x3,x4): 0
 
- U135(x1,x2,x3,x4): 0
 
- U136(x1,x2,x3,x4): 0
 
- U21(x,y): 0
 
- U22(x,y): 0
 
- U23(x): 0
 
- U31(x,y): 0
 
- U32(x,y): 0
 
- U33(x): 0
 
- U41(x,y,z): 0
 
- U42(x,y,z): 0
 
- U43(x,y,z): 0
 
- U44(x,y,z): 0
 
- U45(x,y): 0
 
- U46(x): 0
 
- U51(x,y): 1
 
- U51#(x,y): y + 2
 
- U52(x): 1
 
- U61(x,y): 1
 
- U61#(x,y): y + 1
 
- U62(x): 0
 
- U71(x): 0
 
- U81(x): 0
 
- U91(x,y,z): 0
 
- U92(x,y,z): 0
 
- U93(x,y,z): 0
 
- U94(x,y,z): 0
 
- U95(x,y): 0
 
- U96(x): 0
 
- cons(x,y): y + x + 2
 
- isNat(x): 0
 
- isNatIList(x): 0
 
- isNatIListKind(x): 2
 
- isNatIListKind#(x): x + 1
 
- isNatKind(x): 2
 
- isNatList(x): 0
 
- length(x): x + 3
 
- nil: 2
 
- s(x): 3x + 3
 
- take(x,y): 2y + x + 1
 
- tt: 0
 
- zeros: 3
 
Standard Usable rules
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| U52(tt) |  →  | tt |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| isNatIListKind(zeros) |  →  | tt | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| isNatIListKind#(cons(V1, V2)) |  →  | U51#(isNatKind(V1), V2) |  | isNatIListKind#(take(V1, V2)) |  →  | U61#(isNatKind(V1), V2) | 
| U51#(tt, V2) |  →  | isNatIListKind#(V2) | 
 
 Problem 14: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U61#(tt, V2) |  →  | isNatIListKind#(V2) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
 
 Problem 3: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| length#(cons(N, L)) |  →  | U111#(isNatList(L), L, N) |  | U114#(tt, L) |  →  | length#(L) | 
| U112#(tt, L, N) |  →  | U113#(isNat(N), L, N) |  | U113#(tt, L, N) |  →  | U114#(isNatKind(N), L) | 
| U111#(tt, L, N) |  →  | U112#(isNatIListKind(L), L, N) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 2
 
- U101(x,y,z): y
 
- U102(x,y,z): y
 
- U103(x,y,z): y
 
- U104(x,y,z): y
 
- U105(x,y): x
 
- U106(x): 2
 
- U11(x,y): y
 
- U111(x,y,z): 2y
 
- U111#(x,y,z): y + x
 
- U112(x,y,z): 2y
 
- U112#(x,y,z): y
 
- U113(x,y,z): 2y
 
- U113#(x,y,z): y
 
- U114(x,y): 2y
 
- U114#(x,y): y
 
- U12(x,y): y
 
- U121(x,y): 2
 
- U122(x): x
 
- U13(x): x
 
- U131(x1,x2,x3,x4): 2x3
 
- U132(x1,x2,x3,x4): 2x3
 
- U133(x1,x2,x3,x4): 2x3
 
- U134(x1,x2,x3,x4): 2x3
 
- U135(x1,x2,x3,x4): 2x3
 
- U136(x1,x2,x3,x4): 2x3
 
- U21(x,y): y
 
- U22(x,y): y
 
- U23(x): x
 
- U31(x,y): y + x
 
- U32(x,y): y + 1
 
- U33(x): x + 1
 
- U41(x,y,z): z + 2
 
- U42(x,y,z): z + x
 
- U43(x,y,z): z + x
 
- U44(x,y,z): z + x
 
- U45(x,y): y + 2
 
- U46(x): 2
 
- U51(x,y): 2
 
- U52(x): x
 
- U61(x,y): 2
 
- U62(x): 2
 
- U71(x): x
 
- U81(x): x
 
- U91(x,y,z): z
 
- U92(x,y,z): z
 
- U93(x,y,z): z
 
- U94(x,y,z): z
 
- U95(x,y): y
 
- U96(x): x
 
- cons(x,y): 2y
 
- isNat(x): x
 
- isNatIList(x): x + 2
 
- isNatIListKind(x): 2
 
- isNatKind(x): 2
 
- isNatList(x): x
 
- length(x): x
 
- length#(x): x
 
- nil: 2
 
- s(x): 2x
 
- take(x,y): x
 
- tt: 2
 
- zeros: 0
 
Standard Usable rules
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNatIListKind(nil) |  →  | tt |  | U114(tt, L) |  →  | s(length(L)) | 
| U121(tt, IL) |  →  | U122(isNatIListKind(IL)) |  | U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) | 
| U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) |  | U13(tt) |  →  | tt | 
| U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| length(nil) |  →  | 0 |  | U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) | 
| isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) |  | U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) | 
| U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) |  | U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) | 
| isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) |  | U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) | 
| U122(tt) |  →  | nil |  | U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) | 
| U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| U52(tt) |  →  | tt |  | U46(tt) |  →  | tt | 
| isNatIList(V) |  →  | U31(isNatIListKind(V), V) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U61(tt, V2) |  →  | U62(isNatIListKind(V2)) | 
| isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| U33(tt) |  →  | tt |  | U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
| U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) |  | U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNatIList(zeros) |  →  | tt |  | U32(tt, V) |  →  | U33(isNatList(V)) | 
| isNat(0) |  →  | tt |  | isNatList(nil) |  →  | tt | 
| U23(tt) |  →  | tt |  | zeros |  →  | cons(0, zeros) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U106(tt) |  →  | tt | 
| U112(tt, L, N) |  →  | U113(isNat(N), L, N) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| isNatIListKind(zeros) |  →  | tt |  | U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| U111#(tt, L, N) |  →  | U112#(isNatIListKind(L), L, N) | 
 
 Problem 7: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| length#(cons(N, L)) |  →  | U111#(isNatList(L), L, N) |  | U114#(tt, L) |  →  | length#(L) | 
| U112#(tt, L, N) |  →  | U113#(isNat(N), L, N) |  | U113#(tt, L, N) |  →  | U114#(isNatKind(N), L) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
 
 Problem 4: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| U134#(tt, IL, M, N) |  →  | U135#(isNat(N), IL, M, N) |  | U135#(tt, IL, M, N) |  →  | U136#(isNatKind(N), IL, M, N) | 
| T(take(x_1, x_2)) |  →  | T(x_2) |  | U136#(tt, IL, M, N) |  →  | T(N) | 
| U131#(tt, IL, M, N) |  →  | U132#(isNatIListKind(IL), IL, M, N) |  | T(take(x_1, x_2)) |  →  | T(x_1) | 
| U133#(tt, IL, M, N) |  →  | U134#(isNatKind(M), IL, M, N) |  | T(take(M, IL)) |  →  | take#(M, IL) | 
| take#(s(M), cons(N, IL)) |  →  | U131#(isNatIList(IL), IL, M, N) |  | U132#(tt, IL, M, N) |  →  | U133#(isNat(M), IL, M, N) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
 
- T(x): 2x
 
- U101(x,y,z): 0
 
- U102(x,y,z): 0
 
- U103(x,y,z): 0
 
- U104(x,y,z): 0
 
- U105(x,y): 0
 
- U106(x): 0
 
- U11(x,y): 0
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): 0
 
- U121(x,y): 1
 
- U122(x): 1
 
- U13(x): 0
 
- U131(x1,x2,x3,x4): 2x4 + x3 + 1
 
- U131#(x1,x2,x3,x4): 2x4
 
- U132(x1,x2,x3,x4): 2x4 + x3 + 1
 
- U132#(x1,x2,x3,x4): 2x4
 
- U133(x1,x2,x3,x4): 2x4 + x3
 
- U133#(x1,x2,x3,x4): 2x4
 
- U134(x1,x2,x3,x4): 2x4
 
- U134#(x1,x2,x3,x4): 2x4
 
- U135(x1,x2,x3,x4): 2x4
 
- U135#(x1,x2,x3,x4): 2x4
 
- U136(x1,x2,x3,x4): 2x4
 
- U136#(x1,x2,x3,x4): 2x4
 
- U21(x,y): 0
 
- U22(x,y): 0
 
- U23(x): 0
 
- U31(x,y): 0
 
- U32(x,y): 0
 
- U33(x): 0
 
- U41(x,y,z): 0
 
- U42(x,y,z): 0
 
- U43(x,y,z): 0
 
- U44(x,y,z): 0
 
- U45(x,y): 0
 
- U46(x): 0
 
- U51(x,y): 0
 
- U52(x): 0
 
- U61(x,y): 0
 
- U62(x): 0
 
- U71(x): 0
 
- U81(x): 0
 
- U91(x,y,z): 0
 
- U92(x,y,z): 0
 
- U93(x,y,z): 0
 
- U94(x,y,z): 0
 
- U95(x,y): 0
 
- U96(x): 0
 
- cons(x,y): 2x
 
- isNat(x): 0
 
- isNatIList(x): 0
 
- isNatIListKind(x): 0
 
- isNatKind(x): 0
 
- isNatList(x): 0
 
- length(x): 0
 
- nil: 0
 
- s(x): x
 
- take(x,y): y + x + 1
 
- take#(x,y): y
 
- tt: 0
 
- zeros: 0
 
Standard Usable rules
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNatIListKind(nil) |  →  | tt |  | U114(tt, L) |  →  | s(length(L)) | 
| U121(tt, IL) |  →  | U122(isNatIListKind(IL)) |  | U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) | 
| U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) |  | U13(tt) |  →  | tt | 
| U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| length(nil) |  →  | 0 |  | U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) | 
| isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) |  | U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) | 
| U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) |  | U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) | 
| isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) |  | U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) | 
| U122(tt) |  →  | nil |  | U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) | 
| U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| U52(tt) |  →  | tt |  | U46(tt) |  →  | tt | 
| isNatIList(V) |  →  | U31(isNatIListKind(V), V) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U61(tt, V2) |  →  | U62(isNatIListKind(V2)) | 
| isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| U33(tt) |  →  | tt |  | U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
| U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) |  | U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNatIList(zeros) |  →  | tt |  | U32(tt, V) |  →  | U33(isNatList(V)) | 
| isNat(0) |  →  | tt |  | isNatList(nil) |  →  | tt | 
| U23(tt) |  →  | tt |  | zeros |  →  | cons(0, zeros) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U106(tt) |  →  | tt | 
| U112(tt, L, N) |  →  | U113(isNat(N), L, N) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| isNatIListKind(zeros) |  →  | tt |  | U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) | 
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) | 
| T(take(M, IL)) |  →  | take#(M, IL) | 
 
 Problem 8: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U134#(tt, IL, M, N) |  →  | U135#(isNat(N), IL, M, N) |  | U135#(tt, IL, M, N) |  →  | U136#(isNatKind(N), IL, M, N) | 
| U136#(tt, IL, M, N) |  →  | T(N) |  | U131#(tt, IL, M, N) |  →  | U132#(isNatIListKind(IL), IL, M, N) | 
| U133#(tt, IL, M, N) |  →  | U134#(isNatKind(M), IL, M, N) |  | take#(s(M), cons(N, IL)) |  →  | U131#(isNatIList(IL), IL, M, N) | 
| U132#(tt, IL, M, N) |  →  | U133#(isNat(M), IL, M, N) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!
 
 Problem 5: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| U95#(tt, V2) |  →  | isNatList#(V2) |  | U94#(tt, V1, V2) |  →  | U95#(isNat(V1), V2) | 
| isNatList#(take(V1, V2)) |  →  | U101#(isNatKind(V1), V1, V2) |  | U45#(tt, V2) |  →  | isNatIList#(V2) | 
| isNat#(s(V1)) |  →  | U21#(isNatKind(V1), V1) |  | U22#(tt, V1) |  →  | isNat#(V1) | 
| U91#(tt, V1, V2) |  →  | U92#(isNatKind(V1), V1, V2) |  | U104#(tt, V1, V2) |  →  | isNat#(V1) | 
| U21#(tt, V1) |  →  | U22#(isNatKind(V1), V1) |  | U102#(tt, V1, V2) |  →  | U103#(isNatIListKind(V2), V1, V2) | 
| U31#(tt, V) |  →  | U32#(isNatIListKind(V), V) |  | U32#(tt, V) |  →  | isNatList#(V) | 
| U92#(tt, V1, V2) |  →  | U93#(isNatIListKind(V2), V1, V2) |  | isNatIList#(V) |  →  | U31#(isNatIListKind(V), V) | 
| U105#(tt, V2) |  →  | isNatIList#(V2) |  | U41#(tt, V1, V2) |  →  | U42#(isNatKind(V1), V1, V2) | 
| U12#(tt, V1) |  →  | isNatList#(V1) |  | isNatList#(cons(V1, V2)) |  →  | U91#(isNatKind(V1), V1, V2) | 
| U42#(tt, V1, V2) |  →  | U43#(isNatIListKind(V2), V1, V2) |  | U101#(tt, V1, V2) |  →  | U102#(isNatKind(V1), V1, V2) | 
| U93#(tt, V1, V2) |  →  | U94#(isNatIListKind(V2), V1, V2) |  | U11#(tt, V1) |  →  | U12#(isNatIListKind(V1), V1) | 
| isNatIList#(cons(V1, V2)) |  →  | U41#(isNatKind(V1), V1, V2) |  | U43#(tt, V1, V2) |  →  | U44#(isNatIListKind(V2), V1, V2) | 
| isNat#(length(V1)) |  →  | U11#(isNatIListKind(V1), V1) |  | U44#(tt, V1, V2) |  →  | U45#(isNat(V1), V2) | 
| U94#(tt, V1, V2) |  →  | isNat#(V1) |  | U103#(tt, V1, V2) |  →  | U104#(isNatIListKind(V2), V1, V2) | 
| U44#(tt, V1, V2) |  →  | isNat#(V1) |  | U104#(tt, V1, V2) |  →  | U105#(isNat(V1), V2) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 1
 
- U101(x,y,z): 2
 
- U101#(x,y,z): 3z + 2y
 
- U102(x,y,z): x + 1
 
- U102#(x,y,z): 3z + 2y
 
- U103(x,y,z): 2
 
- U103#(x,y,z): 3z + 2y
 
- U104(x,y,z): 1
 
- U104#(x,y,z): 2z + 2y
 
- U105(x,y): 1
 
- U105#(x,y): 2y
 
- U106(x): 1
 
- U11(x,y): y + x
 
- U11#(x,y): 2y
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): y + 1
 
- U12#(x,y): 2y
 
- U121(x,y): 0
 
- U122(x): 0
 
- U13(x): 1
 
- U131(x1,x2,x3,x4): 0
 
- U132(x1,x2,x3,x4): 0
 
- U133(x1,x2,x3,x4): 0
 
- U134(x1,x2,x3,x4): 0
 
- U135(x1,x2,x3,x4): 0
 
- U136(x1,x2,x3,x4): 0
 
- U21(x,y): y
 
- U21#(x,y): 2y
 
- U22(x,y): y
 
- U22#(x,y): 2y
 
- U23(x): x
 
- U31(x,y): y + 2x
 
- U31#(x,y): 2y
 
- U32(x,y): y + 2x
 
- U32#(x,y): 2y
 
- U33(x): x
 
- U41(x,y,z): 2z + y + 2x
 
- U41#(x,y,z): 3z + 2y
 
- U42(x,y,z): 2z + y + x + 1
 
- U42#(x,y,z): 3z + 2y
 
- U43(x,y,z): 2z + y + x + 1
 
- U43#(x,y,z): 3z + 2y
 
- U44(x,y,z): 2z + y
 
- U44#(x,y,z): 2z + 2y
 
- U45(x,y): 2y + x
 
- U45#(x,y): 2y + 2x
 
- U46(x): 1
 
- U51(x,y): x
 
- U52(x): 1
 
- U61(x,y): 1
 
- U62(x): 1
 
- U71(x): 1
 
- U81(x): 1
 
- U91(x,y,z): 2x
 
- U91#(x,y,z): 2z + 2y
 
- U92(x,y,z): x + 1
 
- U92#(x,y,z): 2z + 2y
 
- U93(x,y,z): 2x
 
- U93#(x,y,z): 2z + 2y
 
- U94(x,y,z): 1
 
- U94#(x,y,z): 2z + 2y
 
- U95(x,y): 1
 
- U95#(x,y): 2y + 2x
 
- U96(x): 1
 
- cons(x,y): 2y + x
 
- isNat(x): x
 
- isNat#(x): 2x
 
- isNatIList(x): x + 2
 
- isNatIList#(x): 2x
 
- isNatIListKind(x): 1
 
- isNatKind(x): 1
 
- isNatList(x): 2
 
- isNatList#(x): 2x
 
- length(x): 2x + 1
 
- nil: 0
 
- s(x): x
 
- take(x,y): 2y + x + 1
 
- tt: 1
 
- zeros: 0
 
Standard Usable rules
| isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) |  | isNatIListKind(nil) |  →  | tt | 
| U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) |  | U13(tt) |  →  | tt | 
| U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) |  | U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) | 
| U62(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| isNatKind(0) |  →  | tt |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) |  | U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) | 
| isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) |  | U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) | 
| U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) | 
| U52(tt) |  →  | tt |  | U46(tt) |  →  | tt | 
| isNatIList(V) |  →  | U31(isNatIListKind(V), V) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U61(tt, V2) |  →  | U62(isNatIListKind(V2)) | 
| isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | U33(tt) |  →  | tt | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U12(tt, V1) |  →  | U13(isNatList(V1)) | 
| U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) |  | U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNatIList(zeros) |  →  | tt |  | U32(tt, V) |  →  | U33(isNatList(V)) | 
| isNat(0) |  →  | tt |  | isNatList(nil) |  →  | tt | 
| U23(tt) |  →  | tt |  | U71(tt) |  →  | tt | 
| isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) |  | isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) | 
| U22(tt, V1) |  →  | U23(isNat(V1)) |  | U21(tt, V1) |  →  | U22(isNatKind(V1), V1) | 
| U106(tt) |  →  | tt |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| isNatIListKind(zeros) |  →  | tt | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| U95#(tt, V2) |  →  | isNatList#(V2) |  | isNatList#(take(V1, V2)) |  →  | U101#(isNatKind(V1), V1, V2) | 
| U45#(tt, V2) |  →  | isNatIList#(V2) |  | isNat#(length(V1)) |  →  | U11#(isNatIListKind(V1), V1) | 
 
 Problem 9: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| U94#(tt, V1, V2) |  →  | U95#(isNat(V1), V2) |  | isNat#(s(V1)) |  →  | U21#(isNatKind(V1), V1) | 
| U22#(tt, V1) |  →  | isNat#(V1) |  | U91#(tt, V1, V2) |  →  | U92#(isNatKind(V1), V1, V2) | 
| U104#(tt, V1, V2) |  →  | isNat#(V1) |  | U102#(tt, V1, V2) |  →  | U103#(isNatIListKind(V2), V1, V2) | 
| U21#(tt, V1) |  →  | U22#(isNatKind(V1), V1) |  | U32#(tt, V) |  →  | isNatList#(V) | 
| U31#(tt, V) |  →  | U32#(isNatIListKind(V), V) |  | U92#(tt, V1, V2) |  →  | U93#(isNatIListKind(V2), V1, V2) | 
| isNatIList#(V) |  →  | U31#(isNatIListKind(V), V) |  | U105#(tt, V2) |  →  | isNatIList#(V2) | 
| U41#(tt, V1, V2) |  →  | U42#(isNatKind(V1), V1, V2) |  | U12#(tt, V1) |  →  | isNatList#(V1) | 
| isNatList#(cons(V1, V2)) |  →  | U91#(isNatKind(V1), V1, V2) |  | U42#(tt, V1, V2) |  →  | U43#(isNatIListKind(V2), V1, V2) | 
| U101#(tt, V1, V2) |  →  | U102#(isNatKind(V1), V1, V2) |  | U93#(tt, V1, V2) |  →  | U94#(isNatIListKind(V2), V1, V2) | 
| U11#(tt, V1) |  →  | U12#(isNatIListKind(V1), V1) |  | isNatIList#(cons(V1, V2)) |  →  | U41#(isNatKind(V1), V1, V2) | 
| U43#(tt, V1, V2) |  →  | U44#(isNatIListKind(V2), V1, V2) |  | U44#(tt, V1, V2) |  →  | U45#(isNat(V1), V2) | 
| U94#(tt, V1, V2) |  →  | isNat#(V1) |  | U103#(tt, V1, V2) |  →  | U104#(isNatIListKind(V2), V1, V2) | 
| U44#(tt, V1, V2) |  →  | isNat#(V1) |  | U104#(tt, V1, V2) |  →  | U105#(isNat(V1), V2) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
| isNat#(s(V1)) → U21#(isNatKind(V1), V1) | U22#(tt, V1) → isNat#(V1) | 
| U21#(tt, V1) → U22#(isNatKind(V1), V1) | 
 
 Problem 10: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
| isNat#(s(V1)) |  →  | U21#(isNatKind(V1), V1) |  | U22#(tt, V1) |  →  | isNat#(V1) | 
| U21#(tt, V1) |  →  | U22#(isNatKind(V1), V1) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, U122, 0, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U81, U52, U11, U12, U13, U102, U103, U101, nil
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U105) = μ(U52#) = μ(U106) = μ(U112) = μ(U111) = μ(U62) = μ(U114) = μ(U61) = μ(U113) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U43#) = μ(U44) = μ(U132) = μ(U43) = μ(U131) = μ(U42) = μ(U134) = μ(U41) = μ(U133) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U112#) = μ(U11) = μ(U12) = μ(U131#) = μ(U13) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 3
 
- U101(x,y,z): 0
 
- U102(x,y,z): 0
 
- U103(x,y,z): 0
 
- U104(x,y,z): 0
 
- U105(x,y): 0
 
- U106(x): 0
 
- U11(x,y): 0
 
- U111(x,y,z): 0
 
- U112(x,y,z): 0
 
- U113(x,y,z): 0
 
- U114(x,y): 0
 
- U12(x,y): 0
 
- U121(x,y): 0
 
- U122(x): 0
 
- U13(x): 0
 
- U131(x1,x2,x3,x4): 0
 
- U132(x1,x2,x3,x4): 0
 
- U133(x1,x2,x3,x4): 0
 
- U134(x1,x2,x3,x4): 0
 
- U135(x1,x2,x3,x4): 0
 
- U136(x1,x2,x3,x4): 0
 
- U21(x,y): 0
 
- U21#(x,y): y + 3
 
- U22(x,y): 0
 
- U22#(x,y): y + x + 1
 
- U23(x): 0
 
- U31(x,y): 0
 
- U32(x,y): 0
 
- U33(x): 0
 
- U41(x,y,z): 0
 
- U42(x,y,z): 0
 
- U43(x,y,z): 0
 
- U44(x,y,z): 0
 
- U45(x,y): 0
 
- U46(x): 0
 
- U51(x,y): 0
 
- U52(x): 0
 
- U61(x,y): 2y + 2
 
- U62(x): 1
 
- U71(x): 1
 
- U81(x): 1
 
- U91(x,y,z): 0
 
- U92(x,y,z): 0
 
- U93(x,y,z): 0
 
- U94(x,y,z): 0
 
- U95(x,y): 0
 
- U96(x): 0
 
- cons(x,y): y + x
 
- isNat(x): 0
 
- isNat#(x): x + 1
 
- isNatIList(x): 0
 
- isNatIListKind(x): 2x
 
- isNatKind(x): 1
 
- isNatList(x): 0
 
- length(x): 3x + 3
 
- nil: 0
 
- s(x): 2x + 2
 
- take(x,y): y + 1
 
- tt: 0
 
- zeros: 0
 
Standard Usable rules
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| U71(tt) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U81(tt) |  →  | tt |  | isNatKind(0) |  →  | tt | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | U51(tt, V2) |  →  | U52(isNatIListKind(V2)) | 
| U52(tt) |  →  | tt |  | isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) | 
| isNatIListKind(zeros) |  →  | tt | 
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
| U21#(tt, V1) |  →  | U22#(isNatKind(V1), V1) | 
 
 Problem 12: DependencyGraph
Dependency Pair Problem
Dependency Pairs
| isNat#(s(V1)) |  →  | U21#(isNatKind(V1), V1) |  | U22#(tt, V1) |  →  | isNat#(V1) | 
Rewrite Rules
| zeros |  →  | cons(0, zeros) |  | U101(tt, V1, V2) |  →  | U102(isNatKind(V1), V1, V2) | 
| U102(tt, V1, V2) |  →  | U103(isNatIListKind(V2), V1, V2) |  | U103(tt, V1, V2) |  →  | U104(isNatIListKind(V2), V1, V2) | 
| U104(tt, V1, V2) |  →  | U105(isNat(V1), V2) |  | U105(tt, V2) |  →  | U106(isNatIList(V2)) | 
| U106(tt) |  →  | tt |  | U11(tt, V1) |  →  | U12(isNatIListKind(V1), V1) | 
| U111(tt, L, N) |  →  | U112(isNatIListKind(L), L, N) |  | U112(tt, L, N) |  →  | U113(isNat(N), L, N) | 
| U113(tt, L, N) |  →  | U114(isNatKind(N), L) |  | U114(tt, L) |  →  | s(length(L)) | 
| U12(tt, V1) |  →  | U13(isNatList(V1)) |  | U121(tt, IL) |  →  | U122(isNatIListKind(IL)) | 
| U122(tt) |  →  | nil |  | U13(tt) |  →  | tt | 
| U131(tt, IL, M, N) |  →  | U132(isNatIListKind(IL), IL, M, N) |  | U132(tt, IL, M, N) |  →  | U133(isNat(M), IL, M, N) | 
| U133(tt, IL, M, N) |  →  | U134(isNatKind(M), IL, M, N) |  | U134(tt, IL, M, N) |  →  | U135(isNat(N), IL, M, N) | 
| U135(tt, IL, M, N) |  →  | U136(isNatKind(N), IL, M, N) |  | U136(tt, IL, M, N) |  →  | cons(N, take(M, IL)) | 
| U21(tt, V1) |  →  | U22(isNatKind(V1), V1) |  | U22(tt, V1) |  →  | U23(isNat(V1)) | 
| U23(tt) |  →  | tt |  | U31(tt, V) |  →  | U32(isNatIListKind(V), V) | 
| U32(tt, V) |  →  | U33(isNatList(V)) |  | U33(tt) |  →  | tt | 
| U41(tt, V1, V2) |  →  | U42(isNatKind(V1), V1, V2) |  | U42(tt, V1, V2) |  →  | U43(isNatIListKind(V2), V1, V2) | 
| U43(tt, V1, V2) |  →  | U44(isNatIListKind(V2), V1, V2) |  | U44(tt, V1, V2) |  →  | U45(isNat(V1), V2) | 
| U45(tt, V2) |  →  | U46(isNatIList(V2)) |  | U46(tt) |  →  | tt | 
| U51(tt, V2) |  →  | U52(isNatIListKind(V2)) |  | U52(tt) |  →  | tt | 
| U61(tt, V2) |  →  | U62(isNatIListKind(V2)) |  | U62(tt) |  →  | tt | 
| U71(tt) |  →  | tt |  | U81(tt) |  →  | tt | 
| U91(tt, V1, V2) |  →  | U92(isNatKind(V1), V1, V2) |  | U92(tt, V1, V2) |  →  | U93(isNatIListKind(V2), V1, V2) | 
| U93(tt, V1, V2) |  →  | U94(isNatIListKind(V2), V1, V2) |  | U94(tt, V1, V2) |  →  | U95(isNat(V1), V2) | 
| U95(tt, V2) |  →  | U96(isNatList(V2)) |  | U96(tt) |  →  | tt | 
| isNat(0) |  →  | tt |  | isNat(length(V1)) |  →  | U11(isNatIListKind(V1), V1) | 
| isNat(s(V1)) |  →  | U21(isNatKind(V1), V1) |  | isNatIList(V) |  →  | U31(isNatIListKind(V), V) | 
| isNatIList(zeros) |  →  | tt |  | isNatIList(cons(V1, V2)) |  →  | U41(isNatKind(V1), V1, V2) | 
| isNatIListKind(nil) |  →  | tt |  | isNatIListKind(zeros) |  →  | tt | 
| isNatIListKind(cons(V1, V2)) |  →  | U51(isNatKind(V1), V2) |  | isNatIListKind(take(V1, V2)) |  →  | U61(isNatKind(V1), V2) | 
| isNatKind(0) |  →  | tt |  | isNatKind(length(V1)) |  →  | U71(isNatIListKind(V1)) | 
| isNatKind(s(V1)) |  →  | U81(isNatKind(V1)) |  | isNatList(nil) |  →  | tt | 
| isNatList(cons(V1, V2)) |  →  | U91(isNatKind(V1), V1, V2) |  | isNatList(take(V1, V2)) |  →  | U101(isNatKind(V1), V1, V2) | 
| length(nil) |  →  | 0 |  | length(cons(N, L)) |  →  | U111(isNatList(L), L, N) | 
| take(0, IL) |  →  | U121(isNatIList(IL), IL) |  | take(s(M), cons(N, IL)) |  →  | U131(isNatIList(IL), IL, M, N) | 
Original Signature
Termination of terms over the following signature is verified: U104, U105, U106, U112, U111, U114, U62, U61, U113, U23, U21, U22, isNatIList, isNatKind, U71, 0, U122, U121, zeros, U31, U32, U33, isNatIListKind, U96, U94, U95, isNat, U46, U45, U132, U44, U131, U43, U93, U134, U42, U92, U133, U41, U91, U136, U135, length, cons, isNatList, s, U51, tt, take, U52, U81, U11, U12, U13, U102, U103, nil, U101
Strategy
Context-sensitive strategy:
μ(zeros#) = μ(0) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(isNatIListKind#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(isNatKind#) = μ(isNat) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U104) = μ(U52#) = μ(U105) = μ(U106) = μ(U112) = μ(U111) = μ(U114) = μ(U62) = μ(U113) = μ(U61) = μ(U45#) = μ(U12#) = μ(U51#) = μ(U71) = μ(U71#) = μ(U122) = μ(U121) = μ(U46#) = μ(U32#) = μ(U13#) = μ(U102#) = μ(U135#) = μ(U23#) = μ(U95#) = μ(U122#) = μ(U46) = μ(U45) = μ(U132) = μ(U44) = μ(U43#) = μ(U131) = μ(U43) = μ(U134) = μ(U42) = μ(U133) = μ(U41) = μ(U136) = μ(U135) = μ(length) = μ(cons) = μ(U33#) = μ(U101#) = μ(U121#) = μ(U96#) = μ(U136#) = μ(U44#) = μ(U51) = μ(s) = μ(U52) = μ(U93#) = μ(U21#) = μ(U62#) = μ(U104#) = μ(U134#) = μ(U41#) = μ(U23) = μ(U113#) = μ(U21) = μ(U22) = μ(U94#) = μ(U22#) = μ(U61#) = μ(U103#) = μ(U133#) = μ(U42#) = μ(U31) = μ(U32) = μ(U33) = μ(U114#) = μ(length#) = μ(U91#) = μ(U96) = μ(U81#) = μ(U94) = μ(U106#) = μ(U95) = μ(U93) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(U92#) = μ(U105#) = μ(U81) = μ(U11) = μ(U112#) = μ(U12) = μ(U13) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(take#) = μ(take) = {1, 2}
There are no SCCs!