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!