TIMEOUT
The TRS could not be proven terminating. The proof attempt took 60008 ms.
The following DP Processors were used
Problem 1 was processed with processor DependencyGraph (1074ms).
| Problem 2 was processed with processor PolynomialLinearRange4 (3529ms).
| | Problem 4 was processed with processor DependencyGraph (230ms).
| | | Problem 5 was processed with processor PolynomialLinearRange4 (2147ms).
| | | | Problem 8 was processed with processor DependencyGraph (50ms).
| | | | | Problem 9 remains open; application of the following processors failed [PolynomialLinearRange4 (295ms), DependencyGraph (1ms), PolynomialLinearRange4 (243ms), DependencyGraph (1ms), PolynomialLinearRange4 (258ms), DependencyGraph (1ms), ReductionPairSAT (1316ms), DependencyGraph (0ms)].
| | | | | Problem 10 was processed with processor PolynomialLinearRange4 (414ms).
| | | | | | Problem 12 was processed with processor PolynomialLinearRange4 (379ms).
| | | | | | | Problem 13 remains open; application of the following processors failed [DependencyGraph (5ms), PolynomialLinearRange4 (227ms), DependencyGraph (5ms), ReductionPairSAT (1198ms), DependencyGraph (5ms)].
| | | | | Problem 11 remains open; application of the following processors failed [PolynomialLinearRange4 (228ms), DependencyGraph (1ms), PolynomialLinearRange4 (221ms), DependencyGraph (1ms), PolynomialLinearRange4 (216ms), DependencyGraph (1ms), ReductionPairSAT (1575ms), DependencyGraph (0ms)].
| | | Problem 6 remains open; application of the following processors failed [PolynomialLinearRange4 (291ms), DependencyGraph (1ms), PolynomialLinearRange4 (298ms), DependencyGraph (0ms), PolynomialLinearRange4 (292ms), DependencyGraph (0ms), PolynomialLinearRange4 (285ms), DependencyGraph (0ms), ReductionPairSAT (1197ms), DependencyGraph (1ms)].
| | | Problem 7 was processed with processor PolynomialLinearRange4 (48ms).
| Problem 3 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (29ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (1ms), PolynomialOrderingProcessor (0ms), DependencyGraph (1ms), PolynomialLinearRange4 (324ms), DependencyGraph (0ms), PolynomialLinearRange4 (354ms), DependencyGraph (1ms), PolynomialLinearRange4 (313ms), DependencyGraph (1ms), PolynomialLinearRange4 (295ms), DependencyGraph (0ms), PolynomialLinearRange4 (295ms), DependencyGraph (1ms), ReductionPairSAT (1771ms), DependencyGraph (1ms), SizeChangePrinciple (timeout)].
The following open problems remain:
Open Dependency Pair Problem 3
Dependency Pairs
length#(cons(N, L)) | → | U71#(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | | U71#(tt, L) | → | length#(L) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Open Dependency Pair Problem 6
Dependency Pairs
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | U21#(tt, V1) | → | isNat#(V1) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U61, U43, U42, U41, U91, length, U21, cons, U22, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U52, U81, U11, U12, U31, U32, nil
Open Dependency Pair Problem 9
Dependency Pairs
U42#(tt, V2) | → | isNatIList#(V2) | | U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) |
isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Open Dependency Pair Problem 11
Dependency Pairs
isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U52#(tt, V2) | → | isNatList#(V2) |
U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Open Dependency Pair Problem 13
Dependency Pairs
and#(tt, X) | → | T(X) | | isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_2) |
T(isNatIListKind(L)) | → | isNatIListKind#(L) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Problem 1: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(V1, V2)) | → | isNatKind#(V1) | | isNat#(s(V1)) | → | isNatKind#(V1) |
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | U31#(tt, V) | → | isNatList#(V) |
take#(s(M), cons(N, IL)) | → | and#(isNatIList(IL), isNatIListKind(IL)) | | T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) |
isNatKind#(length(V1)) | → | isNatIListKind#(V1) | | U42#(tt, V2) | → | isNatIList#(V2) |
T(and(x_1, x_2)) | → | T(x_1) | | isNatList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U71#(tt, L) | → | length#(L) | | isNatKind#(s(V1)) | → | isNatKind#(V1) |
isNatIList#(V) | → | U31#(isNatIListKind(V), V) | | T(zeros) | → | zeros# |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) |
U61#(tt, V1, V2) | → | isNat#(V1) | | isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatList#(cons(V1, V2)) | → | isNatKind#(V1) | | isNatIList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U21#(tt, V1) | → | isNat#(V1) | | and#(tt, X) | → | T(X) |
T(isNatKind(M)) | → | isNatKind#(M) | | isNatList#(take(V1, V2)) | → | isNatKind#(V1) |
U11#(tt, V1) | → | U12#(isNatList(V1)) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
T(take(x_1, x_2)) | → | T(x_1) | | isNat#(length(V1)) | → | isNatIListKind#(V1) |
length#(cons(N, L)) | → | and#(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))) | | T(isNatIListKind(L)) | → | isNatIListKind#(L) |
isNatList#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | take#(0, IL) | → | isNatIList#(IL) |
isNat#(length(V1)) | → | U11#(isNatIListKind(V1), V1) | | U71#(tt, L) | → | T(L) |
U31#(tt, V) | → | U32#(isNatList(V)) | | length#(cons(N, L)) | → | U71#(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
T(isNatKind(x_1)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_2) |
U62#(tt, V2) | → | U63#(isNatIList(V2)) | | isNatIListKind#(cons(V1, V2)) | → | isNatKind#(V1) |
T(take(M, IL)) | → | take#(M, IL) | | isNatIList#(V) | → | isNatIListKind#(V) |
take#(0, IL) | → | U81#(and(isNatIList(IL), isNatIListKind(IL))) | | U42#(tt, V2) | → | U43#(isNatIList(V2)) |
T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) | | U62#(tt, V2) | → | isNatIList#(V2) |
isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | T(isNat(x_1)) | → | T(x_1) |
U52#(tt, V2) | → | U53#(isNatList(V2)) | | isNatIListKind#(take(V1, V2)) | → | isNatKind#(V1) |
U52#(tt, V2) | → | isNatList#(V2) | | take#(s(M), cons(N, IL)) | → | U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
take#(s(M), cons(N, IL)) | → | isNatIList#(IL) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | T(take(x_1, x_2)) | → | T(x_2) |
take#(s(M), cons(N, IL)) | → | and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | | take#(0, IL) | → | and#(isNatIList(IL), isNatIListKind(IL)) |
U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) | | U21#(tt, V1) | → | U22#(isNat(V1)) |
T(isNatIListKind(x_1)) | → | T(x_1) | | U61#(tt, V1, V2) | → | U62#(isNat(V1), V2) |
U51#(tt, V1, V2) | → | isNat#(V1) | | T(isNatKind(N)) | → | isNatKind#(N) |
T(isNat(M)) | → | isNat#(M) | | U91#(tt, IL, M, N) | → | T(N) |
isNatIListKind#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | U41#(tt, V1, V2) | → | isNat#(V1) |
U11#(tt, V1) | → | isNatList#(V1) | | length#(cons(N, L)) | → | and#(isNatList(L), isNatIListKind(L)) |
T(isNat(N)) | → | isNat#(N) | | length#(cons(N, L)) | → | isNatList#(L) |
isNatList#(take(V1, V2)) | → | U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U61, U43, U42, U41, U91, length, U21, cons, U22, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U52, U81, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(and) = μ(U71) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U81) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
length#(cons(N, L)) → U71#(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | U71#(tt, L) → length#(L) |
isNatIList#(cons(V1, V2)) → isNatKind#(V1) | isNat#(s(V1)) → isNatKind#(V1) |
isNat#(s(V1)) → U21#(isNatKind(V1), V1) | U31#(tt, V) → isNatList#(V) |
take#(s(M), cons(N, IL)) → and#(isNatIList(IL), isNatIListKind(IL)) | isNatKind#(length(V1)) → isNatIListKind#(V1) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) → and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | U42#(tt, V2) → isNatIList#(V2) |
T(and(x_1, x_2)) → T(x_1) | isNatList#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) |
isNatKind#(s(V1)) → isNatKind#(V1) | isNatIList#(V) → U31#(isNatIListKind(V), V) |
T(isNatIListKind(V2)) → isNatIListKind#(V2) | U41#(tt, V1, V2) → U42#(isNat(V1), V2) |
U61#(tt, V1, V2) → isNat#(V1) | isNatIList#(cons(V1, V2)) → U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIList#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | isNatList#(cons(V1, V2)) → isNatKind#(V1) |
U21#(tt, V1) → isNat#(V1) | and#(tt, X) → T(X) |
T(isNatKind(M)) → isNatKind#(M) | isNatList#(take(V1, V2)) → isNatKind#(V1) |
T(and(isNat(N), isNatKind(N))) → and#(isNat(N), isNatKind(N)) | T(take(x_1, x_2)) → T(x_1) |
isNat#(length(V1)) → isNatIListKind#(V1) | T(isNatIListKind(L)) → isNatIListKind#(L) |
isNatList#(take(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | take#(0, IL) → isNatIList#(IL) |
isNat#(length(V1)) → U11#(isNatIListKind(V1), V1) | T(isNatKind(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_2) | isNatIListKind#(cons(V1, V2)) → isNatKind#(V1) |
T(take(M, IL)) → take#(M, IL) | isNatIList#(V) → isNatIListKind#(V) |
T(and(isNat(M), isNatKind(M))) → and#(isNat(M), isNatKind(M)) | U62#(tt, V2) → isNatIList#(V2) |
isNatList#(cons(V1, V2)) → U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | T(isNat(x_1)) → T(x_1) |
isNatIListKind#(take(V1, V2)) → isNatKind#(V1) | U52#(tt, V2) → isNatList#(V2) |
take#(s(M), cons(N, IL)) → isNatIList#(IL) | take#(s(M), cons(N, IL)) → U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
T(isNatIListKind(IL)) → isNatIListKind#(IL) | T(take(x_1, x_2)) → T(x_2) |
isNatIListKind#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | take#(s(M), cons(N, IL)) → and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) |
take#(0, IL) → and#(isNatIList(IL), isNatIListKind(IL)) | U51#(tt, V1, V2) → U52#(isNat(V1), V2) |
T(isNatIListKind(x_1)) → T(x_1) | U61#(tt, V1, V2) → U62#(isNat(V1), V2) |
U51#(tt, V1, V2) → isNat#(V1) | T(isNatKind(N)) → isNatKind#(N) |
T(isNat(M)) → isNat#(M) | U91#(tt, IL, M, N) → T(N) |
isNatIListKind#(take(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | U41#(tt, V1, V2) → isNat#(V1) |
U11#(tt, V1) → isNatList#(V1) | T(isNat(N)) → isNat#(N) |
isNatList#(take(V1, V2)) → U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Problem 2: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(V1, V2)) | → | isNatKind#(V1) | | isNat#(s(V1)) | → | isNatKind#(V1) |
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | U31#(tt, V) | → | isNatList#(V) |
take#(s(M), cons(N, IL)) | → | and#(isNatIList(IL), isNatIListKind(IL)) | | T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) |
isNatKind#(length(V1)) | → | isNatIListKind#(V1) | | U42#(tt, V2) | → | isNatIList#(V2) |
T(and(x_1, x_2)) | → | T(x_1) | | isNatList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
isNatKind#(s(V1)) | → | isNatKind#(V1) | | T(isNatIListKind(V2)) | → | isNatIListKind#(V2) |
isNatIList#(V) | → | U31#(isNatIListKind(V), V) | | U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) |
U61#(tt, V1, V2) | → | isNat#(V1) | | isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | isNatList#(cons(V1, V2)) | → | isNatKind#(V1) |
U21#(tt, V1) | → | isNat#(V1) | | and#(tt, X) | → | T(X) |
T(isNatKind(M)) | → | isNatKind#(M) | | isNatList#(take(V1, V2)) | → | isNatKind#(V1) |
T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) | | T(take(x_1, x_2)) | → | T(x_1) |
isNat#(length(V1)) | → | isNatIListKind#(V1) | | T(isNatIListKind(L)) | → | isNatIListKind#(L) |
isNatList#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | take#(0, IL) | → | isNatIList#(IL) |
isNat#(length(V1)) | → | U11#(isNatIListKind(V1), V1) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) | | isNatIListKind#(cons(V1, V2)) | → | isNatKind#(V1) |
isNatIList#(V) | → | isNatIListKind#(V) | | T(take(M, IL)) | → | take#(M, IL) |
U62#(tt, V2) | → | isNatIList#(V2) | | T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) |
isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | T(isNat(x_1)) | → | T(x_1) |
U52#(tt, V2) | → | isNatList#(V2) | | isNatIListKind#(take(V1, V2)) | → | isNatKind#(V1) |
T(isNatIListKind(IL)) | → | isNatIListKind#(IL) | | take#(s(M), cons(N, IL)) | → | U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
take#(s(M), cons(N, IL)) | → | isNatIList#(IL) | | isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
T(take(x_1, x_2)) | → | T(x_2) | | take#(s(M), cons(N, IL)) | → | and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) |
take#(0, IL) | → | and#(isNatIList(IL), isNatIListKind(IL)) | | U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) |
T(isNatIListKind(x_1)) | → | T(x_1) | | U61#(tt, V1, V2) | → | U62#(isNat(V1), V2) |
U51#(tt, V1, V2) | → | isNat#(V1) | | T(isNatKind(N)) | → | isNatKind#(N) |
T(isNat(M)) | → | isNat#(M) | | U91#(tt, IL, M, N) | → | T(N) |
isNatIListKind#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | U41#(tt, V1, V2) | → | isNat#(V1) |
U11#(tt, V1) | → | isNatList#(V1) | | T(isNat(N)) | → | isNat#(N) |
isNatList#(take(V1, V2)) | → | U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U61, U43, U42, U41, U91, length, U21, cons, U22, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U52, U81, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(U71) = μ(and) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(s) = μ(U51) = μ(U53) = μ(U81) = μ(U52) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): x
- U11(x,y): 1
- U11#(x,y): 3y
- U12(x): 0
- U21(x,y): 0
- U21#(x,y): y
- U22(x): 0
- U31(x,y): 2y + 1
- U31#(x,y): 3y
- U32(x): 1
- U41(x,y,z): 3y + x + 1
- U41#(x,y,z): 3z + y
- U42(x,y): 3x
- U42#(x,y): 3y
- U43(x): 0
- U51(x,y,z): z + 3y + 2
- U51#(x,y,z): 3z + y
- U52(x,y): y + 1
- U52#(x,y): 3y
- U53(x): 0
- U61(x,y,z): 3z + 3y + 2
- U61#(x,y,z): 3z + 2y + 2x
- U62(x,y): 3y
- U62#(x,y): 3y
- U63(x): 0
- U71(x,y): 3y + 2
- U81(x): 0
- U91(x1,x2,x3,x4): 3x4 + 3x3 + 3x2
- U91#(x1,x2,x3,x4): x4 + x2
- and(x,y): y + x
- and#(x,y): y
- cons(x,y): y + 3x
- isNat(x): x
- isNat#(x): x
- isNatIList(x): 2x + 1
- isNatIList#(x): 3x
- isNatIListKind(x): 2x
- isNatIListKind#(x): 2x
- isNatKind(x): x
- isNatKind#(x): x
- isNatList(x): 2x + 2
- isNatList#(x): 3x
- length(x): 3x + 2
- nil: 0
- s(x): x
- take(x,y): 3y + 3x
- take#(x,y): 3y + 2x
- tt: 0
- zeros: 1
Standard Usable rules
isNat(length(V1)) | → | U11(isNatIListKind(V1), V1) | | isNatIListKind(nil) | → | tt |
isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U63(tt) | → | tt |
isNatIList(V) | → | U31(isNatIListKind(V), V) | | U21(tt, V1) | → | U22(isNat(V1)) |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U53(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(s(V1)) | → | isNatKind(V1) |
length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | | U32(tt) | → | tt |
U11(tt, V1) | → | U12(isNatList(V1)) | | isNatKind(0) | → | tt |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | U22(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U43(tt) | → | tt | | U91(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNatList(nil) | → | tt |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U31(tt, V) | → | U32(isNatList(V)) |
zeros | → | cons(0, zeros) | | U12(tt) | → | tt |
isNatIList(cons(V1, V2)) | → | U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U71(tt, L) | → | s(length(L)) |
isNatKind(length(V1)) | → | isNatIListKind(V1) | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U81(tt) | → | nil | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
and(tt, X) | → | X | | U52(tt, V2) | → | U53(isNatList(V2)) |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U62(tt, V2) | → | U63(isNatIList(V2)) |
take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | 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) | | isNat#(length(V1)) | → | isNatIListKind#(V1) |
isNat#(length(V1)) | → | U11#(isNatIListKind(V1), V1) |
Problem 4: DependencyGraph
Dependency Pair Problem
Dependency Pairs
isNatIList#(cons(V1, V2)) | → | isNatKind#(V1) | | isNat#(s(V1)) | → | isNatKind#(V1) |
isNat#(s(V1)) | → | U21#(isNatKind(V1), V1) | | U31#(tt, V) | → | isNatList#(V) |
take#(s(M), cons(N, IL)) | → | and#(isNatIList(IL), isNatIListKind(IL)) | | T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) |
U42#(tt, V2) | → | isNatIList#(V2) | | T(and(x_1, x_2)) | → | T(x_1) |
isNatList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | isNatKind#(s(V1)) | → | isNatKind#(V1) |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | isNatIList#(V) | → | U31#(isNatIListKind(V), V) |
U61#(tt, V1, V2) | → | isNat#(V1) | | U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) |
isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList#(cons(V1, V2)) | → | isNatKind#(V1) |
isNatIList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | U21#(tt, V1) | → | isNat#(V1) |
T(isNatKind(M)) | → | isNatKind#(M) | | and#(tt, X) | → | T(X) |
isNatList#(take(V1, V2)) | → | isNatKind#(V1) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
T(take(x_1, x_2)) | → | T(x_1) | | T(isNatIListKind(L)) | → | isNatIListKind#(L) |
isNatList#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | take#(0, IL) | → | isNatIList#(IL) |
T(isNatKind(x_1)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_2) |
isNatIListKind#(cons(V1, V2)) | → | isNatKind#(V1) | | isNatIList#(V) | → | isNatIListKind#(V) |
T(take(M, IL)) | → | take#(M, IL) | | U62#(tt, V2) | → | isNatIList#(V2) |
T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) | | isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
T(isNat(x_1)) | → | T(x_1) | | U52#(tt, V2) | → | isNatList#(V2) |
isNatIListKind#(take(V1, V2)) | → | isNatKind#(V1) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
take#(s(M), cons(N, IL)) | → | U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | take#(s(M), cons(N, IL)) | → | isNatIList#(IL) |
isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | T(take(x_1, x_2)) | → | T(x_2) |
take#(s(M), cons(N, IL)) | → | and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | | take#(0, IL) | → | and#(isNatIList(IL), isNatIListKind(IL)) |
U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) | | T(isNatIListKind(x_1)) | → | T(x_1) |
U61#(tt, V1, V2) | → | U62#(isNat(V1), V2) | | U51#(tt, V1, V2) | → | isNat#(V1) |
T(isNatKind(N)) | → | isNatKind#(N) | | T(isNat(M)) | → | isNat#(M) |
U91#(tt, IL, M, N) | → | T(N) | | isNatIListKind#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U41#(tt, V1, V2) | → | isNat#(V1) | | U11#(tt, V1) | → | isNatList#(V1) |
T(isNat(N)) | → | isNat#(N) | | isNatList#(take(V1, V2)) | → | U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(and) = μ(U71) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U81) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
isNatKind#(s(V1)) → isNatKind#(V1) |
isNat#(s(V1)) → U21#(isNatKind(V1), V1) | U21#(tt, V1) → isNat#(V1) |
U62#(tt, V2) → isNatIList#(V2) | T(and(isNat(M), isNatKind(M))) → and#(isNat(M), isNatKind(M)) |
U31#(tt, V) → isNatList#(V) | take#(s(M), cons(N, IL)) → and#(isNatIList(IL), isNatIListKind(IL)) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) → and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | isNatList#(cons(V1, V2)) → U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
U42#(tt, V2) → isNatIList#(V2) | T(isNat(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_1) | isNatList#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) |
U52#(tt, V2) → isNatList#(V2) | take#(s(M), cons(N, IL)) → isNatIList#(IL) |
T(isNatIListKind(IL)) → isNatIListKind#(IL) | take#(s(M), cons(N, IL)) → U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
isNatIListKind#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | T(take(x_1, x_2)) → T(x_2) |
isNatIList#(V) → U31#(isNatIListKind(V), V) | T(isNatIListKind(V2)) → isNatIListKind#(V2) |
take#(s(M), cons(N, IL)) → and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | take#(0, IL) → and#(isNatIList(IL), isNatIListKind(IL)) |
U41#(tt, V1, V2) → U42#(isNat(V1), V2) | isNatIList#(cons(V1, V2)) → U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIList#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | U51#(tt, V1, V2) → U52#(isNat(V1), V2) |
and#(tt, X) → T(X) | T(isNatIListKind(x_1)) → T(x_1) |
T(and(isNat(N), isNatKind(N))) → and#(isNat(N), isNatKind(N)) | U61#(tt, V1, V2) → U62#(isNat(V1), V2) |
T(take(x_1, x_2)) → T(x_1) | U91#(tt, IL, M, N) → T(N) |
T(isNatIListKind(L)) → isNatIListKind#(L) | isNatIListKind#(take(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) |
isNatList#(take(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) | take#(0, IL) → isNatIList#(IL) |
T(isNatKind(x_1)) → T(x_1) | T(and(x_1, x_2)) → T(x_2) |
T(take(M, IL)) → take#(M, IL) | isNatIList#(V) → isNatIListKind#(V) |
isNatList#(take(V1, V2)) → U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Problem 5: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
U62#(tt, V2) | → | isNatIList#(V2) | | T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) |
U31#(tt, V) | → | isNatList#(V) | | take#(s(M), cons(N, IL)) | → | and#(isNatIList(IL), isNatIListKind(IL)) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | | isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
U42#(tt, V2) | → | isNatIList#(V2) | | T(isNat(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_1) | | isNatList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U52#(tt, V2) | → | isNatList#(V2) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
take#(s(M), cons(N, IL)) | → | U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | take#(s(M), cons(N, IL)) | → | isNatIList#(IL) |
T(take(x_1, x_2)) | → | T(x_2) | | isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | isNatIList#(V) | → | U31#(isNatIListKind(V), V) |
take#(s(M), cons(N, IL)) | → | and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | | take#(0, IL) | → | and#(isNatIList(IL), isNatIListKind(IL)) |
U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) | | isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) |
and#(tt, X) | → | T(X) | | T(isNatIListKind(x_1)) | → | T(x_1) |
T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) | | U61#(tt, V1, V2) | → | U62#(isNat(V1), V2) |
T(take(x_1, x_2)) | → | T(x_1) | | U91#(tt, IL, M, N) | → | T(N) |
T(isNatIListKind(L)) | → | isNatIListKind#(L) | | isNatIListKind#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
isNatList#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | take#(0, IL) | → | isNatIList#(IL) |
T(isNatKind(x_1)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_2) |
T(take(M, IL)) | → | take#(M, IL) | | isNatIList#(V) | → | isNatIListKind#(V) |
isNatList#(take(V1, V2)) | → | U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(U71) = μ(and) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(s) = μ(U51) = μ(U53) = μ(U81) = μ(U52) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): x
- U11(x,y): 3y
- U12(x): 0
- U21(x,y): x
- U22(x): 0
- U31(x,y): 1
- U31#(x,y): 2y + 1
- U32(x): 0
- U41(x,y,z): z + 2y + 1
- U41#(x,y,z): 2z + 1
- U42(x,y): x + 1
- U42#(x,y): 2y + 1
- U43(x): 1
- U51(x,y,z): 0
- U51#(x,y,z): 2z
- U52(x,y): 0
- U52#(x,y): 2y
- U53(x): 0
- U61(x,y,z): 0
- U61#(x,y,z): 2z + 2x + 2
- U62(x,y): 0
- U62#(x,y): 2y + 1
- U63(x): 0
- U71(x,y): 2y
- U81(x): 1
- U91(x1,x2,x3,x4): 3x4 + 3x3 + 3x2 + 1
- U91#(x1,x2,x3,x4): x4 + 1
- and(x,y): y + x
- and#(x,y): y
- cons(x,y): y + x
- isNat(x): 2x
- isNatIList(x): 2x + 1
- isNatIList#(x): 2x + 1
- isNatIListKind(x): 2x
- isNatIListKind#(x): 2x
- isNatKind(x): x
- isNatList(x): 0
- isNatList#(x): 2x
- length(x): 2x
- nil: 1
- s(x): x
- take(x,y): 3y + 3x + 1
- take#(x,y): 3y + 3x + 1
- tt: 0
- zeros: 1
Standard Usable rules
isNat(length(V1)) | → | U11(isNatIListKind(V1), V1) | | isNatIListKind(nil) | → | tt |
isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U63(tt) | → | tt |
isNatIList(V) | → | U31(isNatIListKind(V), V) | | U21(tt, V1) | → | U22(isNat(V1)) |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U53(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(s(V1)) | → | isNatKind(V1) |
length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | | U32(tt) | → | tt |
U11(tt, V1) | → | U12(isNatList(V1)) | | isNatKind(0) | → | tt |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | U22(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U43(tt) | → | tt | | U91(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNatList(nil) | → | tt |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U31(tt, V) | → | U32(isNatList(V)) |
zeros | → | cons(0, zeros) | | U12(tt) | → | tt |
isNatIList(cons(V1, V2)) | → | U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U71(tt, L) | → | s(length(L)) |
isNatKind(length(V1)) | → | isNatIListKind(V1) | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U81(tt) | → | nil | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
and(tt, X) | → | X | | U52(tt, V2) | → | U53(isNatList(V2)) |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U62(tt, V2) | → | U63(isNatIList(V2)) |
take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | isNatIListKind(zeros) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
U31#(tt, V) | → | isNatList#(V) | | take#(s(M), cons(N, IL)) | → | and#(isNatIList(IL), isNatIListKind(IL)) |
T(take(x_1, x_2)) | → | T(x_2) | | take#(s(M), cons(N, IL)) | → | and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) |
take#(0, IL) | → | and#(isNatIList(IL), isNatIListKind(IL)) | | isNatIList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U61#(tt, V1, V2) | → | U62#(isNat(V1), V2) | | T(take(x_1, x_2)) | → | T(x_1) |
U91#(tt, IL, M, N) | → | T(N) | | isNatList#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
isNatIListKind#(take(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | isNatIList#(V) | → | isNatIListKind#(V) |
Problem 8: DependencyGraph
Dependency Pair Problem
Dependency Pairs
T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) | | U62#(tt, V2) | → | isNatIList#(V2) |
isNatList#(cons(V1, V2)) | → | U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) |
U42#(tt, V2) | → | isNatIList#(V2) | | T(and(x_1, x_2)) | → | T(x_1) |
T(isNat(x_1)) | → | T(x_1) | | isNatList#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
U52#(tt, V2) | → | isNatList#(V2) | | take#(s(M), cons(N, IL)) | → | isNatIList#(IL) |
take#(s(M), cons(N, IL)) | → | U91#(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) | | T(isNatIListKind(V2)) | → | isNatIListKind#(V2) |
isNatIList#(V) | → | U31#(isNatIListKind(V), V) | | U41#(tt, V1, V2) | → | U42#(isNat(V1), V2) |
isNatIList#(cons(V1, V2)) | → | U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U51#(tt, V1, V2) | → | U52#(isNat(V1), V2) |
and#(tt, X) | → | T(X) | | T(isNatIListKind(x_1)) | → | T(x_1) |
T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) | | T(isNatIListKind(L)) | → | isNatIListKind#(L) |
take#(0, IL) | → | isNatIList#(IL) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) | | T(take(M, IL)) | → | take#(M, IL) |
isNatList#(take(V1, V2)) | → | U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U61, U43, U42, U41, U91, length, U21, cons, U22, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U52, U81, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(and) = μ(U71) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U81) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
The following SCCs where found
T(and(isNat(M), isNatKind(M))) → and#(isNat(M), isNatKind(M)) | and#(tt, X) → T(X) |
T(isNatIListKind(x_1)) → T(x_1) | T(and(isNat(N), isNatKind(N))) → and#(isNat(N), isNatKind(N)) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) → and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | T(isNat(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_1) | T(isNatIListKind(L)) → isNatIListKind#(L) |
T(isNatIListKind(IL)) → isNatIListKind#(IL) | isNatIListKind#(cons(V1, V2)) → and#(isNatKind(V1), isNatIListKind(V2)) |
T(isNatIListKind(V2)) → isNatIListKind#(V2) | T(isNatKind(x_1)) → T(x_1) |
T(and(x_1, x_2)) → T(x_2) |
isNatList#(cons(V1, V2)) → U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | U52#(tt, V2) → isNatList#(V2) |
U51#(tt, V1, V2) → U52#(isNat(V1), V2) |
U42#(tt, V2) → isNatIList#(V2) | U41#(tt, V1, V2) → U42#(isNat(V1), V2) |
isNatIList#(cons(V1, V2)) → U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
Problem 10: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
and#(tt, X) | → | T(X) | | T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) |
T(isNatIListKind(x_1)) | → | T(x_1) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | | T(and(x_1, x_2)) | → | T(x_1) |
T(isNat(x_1)) | → | T(x_1) | | T(isNatIListKind(L)) | → | isNatIListKind#(L) |
T(isNatIListKind(IL)) | → | isNatIListKind#(IL) | | isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | T(isNatKind(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_2) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U61, U43, U42, U41, U91, length, U21, cons, U22, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U52, U81, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(U71) = μ(and) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(s) = μ(U51) = μ(U53) = μ(U81) = μ(U52) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): 2x
- U11(x,y): 2
- U12(x): 2
- U21(x,y): y
- U22(x): 0
- U31(x,y): 0
- U32(x): 0
- U41(x,y,z): 0
- U42(x,y): 0
- U43(x): 0
- U51(x,y,z): 0
- U52(x,y): 0
- U53(x): 0
- U61(x,y,z): 0
- U62(x,y): 0
- U63(x): 0
- U71(x,y): y + 1
- U81(x): 2
- U91(x1,x2,x3,x4): 3x4 + 2x3 + 3x2 + 2
- and(x,y): y + 2x
- and#(x,y): 2y
- cons(x,y): y + 3x
- isNat(x): 2x
- isNatIList(x): 0
- isNatIListKind(x): x + 1
- isNatIListKind#(x): 2x + 2
- isNatKind(x): x
- isNatList(x): 0
- length(x): x + 1
- nil: 2
- s(x): x
- take(x,y): 3y + 2x + 2
- tt: 0
- zeros: 0
Standard Usable rules
isNat(length(V1)) | → | U11(isNatIListKind(V1), V1) | | isNatIListKind(nil) | → | tt |
isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U63(tt) | → | tt |
isNatIList(V) | → | U31(isNatIListKind(V), V) | | U21(tt, V1) | → | U22(isNat(V1)) |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U53(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(s(V1)) | → | isNatKind(V1) |
length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | | U32(tt) | → | tt |
U11(tt, V1) | → | U12(isNatList(V1)) | | isNatKind(0) | → | tt |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | U22(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U43(tt) | → | tt | | U91(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNatList(nil) | → | tt |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U31(tt, V) | → | U32(isNatList(V)) |
zeros | → | cons(0, zeros) | | U12(tt) | → | tt |
isNatIList(cons(V1, V2)) | → | U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U71(tt, L) | → | s(length(L)) |
isNatKind(length(V1)) | → | isNatIListKind(V1) | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U81(tt) | → | nil | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
and(tt, X) | → | X | | U52(tt, V2) | → | U53(isNatList(V2)) |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U62(tt, V2) | → | U63(isNatIList(V2)) |
take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | isNatIListKind(zeros) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(isNatIListKind(x_1)) | → | T(x_1) |
Problem 12: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) | | and#(tt, X) | → | T(X) |
T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) | | isNatIListKind#(cons(V1, V2)) | → | and#(isNatKind(V1), isNatIListKind(V2)) |
T(isNatIListKind(V2)) | → | isNatIListKind#(V2) | | T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) |
T(isNatKind(x_1)) | → | T(x_1) | | T(isNat(x_1)) | → | T(x_1) |
T(and(x_1, x_2)) | → | T(x_1) | | T(and(x_1, x_2)) | → | T(x_2) |
T(isNatIListKind(L)) | → | isNatIListKind#(L) | | T(isNatIListKind(IL)) | → | isNatIListKind#(IL) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(and) = μ(U71) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U81) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- T(x): x
- U11(x,y): 0
- U12(x): 0
- U21(x,y): y
- U22(x): 0
- U31(x,y): 0
- U32(x): 0
- U41(x,y,z): 0
- U42(x,y): 0
- U43(x): 0
- U51(x,y,z): 1
- U52(x,y): 0
- U53(x): 0
- U61(x,y,z): 1
- U62(x,y): 1
- U63(x): 0
- U71(x,y): y + 1
- U81(x): x + 1
- U91(x1,x2,x3,x4): 2x4 + x3 + 2x2 + 1
- and(x,y): y + x
- and#(x,y): y
- cons(x,y): y + x
- isNat(x): 2x + 1
- isNatIList(x): 0
- isNatIListKind(x): 2x
- isNatIListKind#(x): 2x
- isNatKind(x): 2x
- isNatList(x): 2
- length(x): x + 1
- nil: 1
- s(x): x
- take(x,y): 2y + x + 1
- tt: 0
- zeros: 0
Standard Usable rules
isNat(length(V1)) | → | U11(isNatIListKind(V1), V1) | | isNatIListKind(nil) | → | tt |
isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U63(tt) | → | tt |
isNatIList(V) | → | U31(isNatIListKind(V), V) | | U21(tt, V1) | → | U22(isNat(V1)) |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | U53(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNat(s(V1)) | → | U21(isNatKind(V1), V1) | | isNatKind(s(V1)) | → | isNatKind(V1) |
length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) | | U32(tt) | → | tt |
U11(tt, V1) | → | U12(isNatList(V1)) | | isNatKind(0) | → | tt |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | U22(tt) | → | tt |
isNatIList(zeros) | → | tt | | length(nil) | → | 0 |
U43(tt) | → | tt | | U91(tt, IL, M, N) | → | cons(N, take(M, IL)) |
isNat(0) | → | tt | | isNatList(nil) | → | tt |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U31(tt, V) | → | U32(isNatList(V)) |
zeros | → | cons(0, zeros) | | U12(tt) | → | tt |
isNatIList(cons(V1, V2)) | → | U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U71(tt, L) | → | s(length(L)) |
isNatKind(length(V1)) | → | isNatIListKind(V1) | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U81(tt) | → | nil | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
and(tt, X) | → | X | | U52(tt, V2) | → | U53(isNatList(V2)) |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | U62(tt, V2) | → | U63(isNatIList(V2)) |
take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) | | isNatIListKind(zeros) | → | tt |
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
T(and(isNat(M), isNatKind(M))) | → | and#(isNat(M), isNatKind(M)) | | T(and(isNat(N), isNatKind(N))) | → | and#(isNat(N), isNatKind(N)) |
T(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))) | → | and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))) | | T(isNat(x_1)) | → | T(x_1) |
Problem 7: PolynomialLinearRange4
Dependency Pair Problem
Dependency Pairs
isNatKind#(s(V1)) | → | isNatKind#(V1) |
Rewrite Rules
zeros | → | cons(0, zeros) | | U11(tt, V1) | → | U12(isNatList(V1)) |
U12(tt) | → | tt | | U21(tt, V1) | → | U22(isNat(V1)) |
U22(tt) | → | tt | | U31(tt, V) | → | U32(isNatList(V)) |
U32(tt) | → | tt | | U41(tt, V1, V2) | → | U42(isNat(V1), V2) |
U42(tt, V2) | → | U43(isNatIList(V2)) | | U43(tt) | → | tt |
U51(tt, V1, V2) | → | U52(isNat(V1), V2) | | U52(tt, V2) | → | U53(isNatList(V2)) |
U53(tt) | → | tt | | U61(tt, V1, V2) | → | U62(isNat(V1), V2) |
U62(tt, V2) | → | U63(isNatIList(V2)) | | U63(tt) | → | tt |
U71(tt, L) | → | s(length(L)) | | U81(tt) | → | nil |
U91(tt, IL, M, N) | → | cons(N, take(M, IL)) | | and(tt, X) | → | X |
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(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
isNatIListKind(nil) | → | tt | | isNatIListKind(zeros) | → | tt |
isNatIListKind(cons(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) | | isNatIListKind(take(V1, V2)) | → | and(isNatKind(V1), isNatIListKind(V2)) |
isNatKind(0) | → | tt | | isNatKind(length(V1)) | → | isNatIListKind(V1) |
isNatKind(s(V1)) | → | isNatKind(V1) | | isNatList(nil) | → | tt |
isNatList(cons(V1, V2)) | → | U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) | | isNatList(take(V1, V2)) | → | U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2) |
length(nil) | → | 0 | | length(cons(N, L)) | → | U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L) |
take(0, IL) | → | U81(and(isNatIList(IL), isNatIListKind(IL))) | | take(s(M), cons(N, IL)) | → | U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N) |
Original Signature
Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, U21, U22, cons, isNatIList, isNatKind, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, U12, U31, U32, nil
Strategy
Context-sensitive strategy:
μ(isNatIListKind#) = μ(zeros#) = μ(isNatIList) = μ(isNatKind) = μ(isNatIList#) = μ(0) = μ(isNatKind#) = μ(zeros) = μ(isNatList#) = μ(isNatIListKind) = μ(isNat) = μ(T) = μ(isNatList) = μ(tt) = μ(isNat#) = μ(nil) = ∅
μ(U11#) = μ(U31#) = μ(U21#) = μ(U62#) = μ(U52#) = μ(U63) = μ(U62) = μ(U41#) = μ(U61) = μ(U21) = μ(U22) = μ(U12#) = μ(U22#) = μ(U61#) = μ(U51#) = μ(U71) = μ(and) = μ(U42#) = μ(U71#) = μ(U32#) = μ(U31) = μ(U32) = μ(length#) = μ(U91#) = μ(U81#) = μ(and#) = μ(U43#) = μ(U43) = μ(U42) = μ(U41) = μ(U91) = μ(length) = μ(cons) = μ(U63#) = μ(U53#) = μ(s) = μ(U51) = μ(U53) = μ(U81) = μ(U52) = μ(U11) = μ(U12) = {1}
μ(take#) = μ(take) = {1, 2}
Polynomial Interpretation
- 0: 0
- U11(x,y): 0
- U12(x): 0
- U21(x,y): 0
- U22(x): 0
- U31(x,y): 0
- U32(x): 0
- U41(x,y,z): 0
- U42(x,y): 0
- U43(x): 0
- U51(x,y,z): 0
- U52(x,y): 0
- U53(x): 0
- U61(x,y,z): 0
- U62(x,y): 0
- U63(x): 0
- U71(x,y): 0
- U81(x): 0
- U91(x1,x2,x3,x4): 0
- and(x,y): 0
- cons(x,y): 0
- isNat(x): 0
- isNatIList(x): 0
- isNatIListKind(x): 0
- isNatKind(x): 0
- isNatKind#(x): x
- isNatList(x): 0
- length(x): 0
- nil: 0
- s(x): x + 2
- take(x,y): 0
- tt: 0
- zeros: 0
There are no usable rules
The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:
isNatKind#(s(V1)) | → | isNatKind#(V1) |