TIMEOUT

The TRS could not be proven terminating. The proof attempt took 60023 ms.

The following DP Processors were used


Problem 1 remains open; application of the following processors failed [DependencyGraph (60003ms)].

The following open problems remain:



Open Dependency Pair Problem 1

Dependency Pairs

proper#(cons(X1, X2)) → proper#(X1)proper#(length(X)) → length#(proper(X))
active#(U52(tt, V2)) → isNatList#(V2)active#(U61(tt, V1, V2)) → isNat#(V1)
active#(U12(X)) → active#(X)active#(take(s(M), cons(N, IL))) → isNatKind#(M)
U11#(mark(X1), X2) → U11#(X1, X2)active#(isNatIListKind(cons(V1, V2))) → isNatKind#(V1)
active#(take(s(M), cons(N, IL))) → and#(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))top#(mark(X)) → proper#(X)
U43#(ok(X)) → U43#(X)length#(mark(X)) → length#(X)
isNatKind#(ok(X)) → isNatKind#(X)U81#(mark(X)) → U81#(X)
proper#(U71(X1, X2)) → U71#(proper(X1), proper(X2))active#(U32(X)) → active#(X)
active#(length(X)) → active#(X)proper#(U12(X)) → U12#(proper(X))
and#(mark(X1), X2) → and#(X1, X2)active#(U21(tt, V1)) → isNat#(V1)
U42#(mark(X1), X2) → U42#(X1, X2)active#(U42(X1, X2)) → U42#(active(X1), X2)
U53#(mark(X)) → U53#(X)active#(isNatList(take(V1, V2))) → U61#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
proper#(U52(X1, X2)) → proper#(X1)proper#(isNatKind(X)) → isNatKind#(proper(X))
active#(U41(X1, X2, X3)) → U41#(active(X1), X2, X3)active#(take(s(M), cons(N, IL))) → isNat#(N)
proper#(U62(X1, X2)) → proper#(X1)U32#(mark(X)) → U32#(X)
active#(isNatIListKind(take(V1, V2))) → isNatKind#(V1)active#(U52(X1, X2)) → active#(X1)
active#(U53(X)) → active#(X)active#(and(X1, X2)) → and#(active(X1), X2)
U52#(ok(X1), ok(X2)) → U52#(X1, X2)active#(isNatIListKind(cons(V1, V2))) → and#(isNatKind(V1), isNatIListKind(V2))
proper#(U41(X1, X2, X3)) → proper#(X1)active#(U31(X1, X2)) → active#(X1)
active#(isNatIListKind(take(V1, V2))) → and#(isNatKind(V1), isNatIListKind(V2))proper#(isNatList(X)) → proper#(X)
U61#(mark(X1), X2, X3) → U61#(X1, X2, X3)take#(ok(X1), ok(X2)) → take#(X1, X2)
active#(U41(tt, V1, V2)) → U42#(isNat(V1), V2)U41#(ok(X1), ok(X2), ok(X3)) → U41#(X1, X2, X3)
proper#(U63(X)) → U63#(proper(X))active#(isNatIList(cons(V1, V2))) → isNatIListKind#(V2)
active#(U21(X1, X2)) → U21#(active(X1), X2)proper#(isNat(X)) → proper#(X)
active#(isNatList(take(V1, V2))) → and#(isNatKind(V1), isNatIListKind(V2))active#(length(cons(N, L))) → and#(isNatList(L), isNatIListKind(L))
proper#(U63(X)) → proper#(X)active#(U11(X1, X2)) → U11#(active(X1), X2)
proper#(U42(X1, X2)) → U42#(proper(X1), proper(X2))U91#(mark(X1), X2, X3, X4) → U91#(X1, X2, X3, X4)
active#(U51(X1, X2, X3)) → U51#(active(X1), X2, X3)active#(isNat(s(V1))) → U21#(isNatKind(V1), V1)
proper#(U31(X1, X2)) → U31#(proper(X1), proper(X2))proper#(U21(X1, X2)) → proper#(X1)
U81#(ok(X)) → U81#(X)proper#(U91(X1, X2, X3, X4)) → proper#(X1)
U31#(ok(X1), ok(X2)) → U31#(X1, X2)active#(U11(tt, V1)) → isNatList#(V1)
active#(U91(X1, X2, X3, X4)) → U91#(active(X1), X2, X3, X4)U52#(mark(X1), X2) → U52#(X1, X2)
active#(U91(tt, IL, M, N)) → take#(M, IL)active#(isNatList(take(V1, V2))) → isNatKind#(V1)
proper#(U91(X1, X2, X3, X4)) → proper#(X2)active#(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)
active#(take(s(M), cons(N, IL))) → isNatIList#(IL)active#(take(0, IL)) → isNatIListKind#(IL)
isNatIListKind#(ok(X)) → isNatIListKind#(X)cons#(ok(X1), ok(X2)) → cons#(X1, X2)
active#(U42(tt, V2)) → isNatIList#(V2)proper#(U11(X1, X2)) → U11#(proper(X1), proper(X2))
proper#(and(X1, X2)) → and#(proper(X1), proper(X2))U71#(ok(X1), ok(X2)) → U71#(X1, X2)
U12#(mark(X)) → U12#(X)proper#(U71(X1, X2)) → proper#(X2)
active#(U62(X1, X2)) → active#(X1)proper#(and(X1, X2)) → proper#(X2)
active#(U11(tt, V1)) → U12#(isNatList(V1))active#(take(s(M), cons(N, IL))) → and#(isNat(M), isNatKind(M))
length#(ok(X)) → length#(X)U22#(mark(X)) → U22#(X)
proper#(U41(X1, X2, X3)) → U41#(proper(X1), proper(X2), proper(X3))active#(take(s(M), cons(N, IL))) → isNatKind#(N)
proper#(U43(X)) → proper#(X)active#(U51(X1, X2, X3)) → active#(X1)
U22#(ok(X)) → U22#(X)active#(length(cons(N, L))) → and#(isNat(N), isNatKind(N))
active#(isNatIListKind(cons(V1, V2))) → isNatIListKind#(V2)active#(isNatIList(cons(V1, V2))) → and#(isNatKind(V1), isNatIListKind(V2))
take#(X1, mark(X2)) → take#(X1, X2)active#(U81(X)) → active#(X)
active#(take(0, IL)) → U81#(and(isNatIList(IL), isNatIListKind(IL)))active#(U21(tt, V1)) → U22#(isNat(V1))
proper#(s(X)) → proper#(X)proper#(isNatList(X)) → isNatList#(proper(X))
active#(isNat(length(V1))) → U11#(isNatIListKind(V1), V1)proper#(take(X1, X2)) → take#(proper(X1), proper(X2))
active#(cons(X1, X2)) → active#(X1)take#(mark(X1), X2) → take#(X1, X2)
active#(length(cons(N, L))) → isNatKind#(N)proper#(U31(X1, X2)) → proper#(X2)
and#(ok(X1), ok(X2)) → and#(X1, X2)active#(length(cons(N, L))) → and#(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N)))
active#(length(cons(N, L))) → isNatList#(L)proper#(U32(X)) → proper#(X)
active#(U12(X)) → U12#(active(X))proper#(take(X1, X2)) → proper#(X1)
active#(length(cons(N, L))) → isNat#(N)active#(U22(X)) → U22#(active(X))
active#(U71(X1, X2)) → active#(X1)U43#(mark(X)) → U43#(X)
U61#(ok(X1), ok(X2), ok(X3)) → U61#(X1, X2, X3)proper#(take(X1, X2)) → proper#(X2)
active#(take(X1, X2)) → active#(X1)U63#(ok(X)) → U63#(X)
s#(mark(X)) → s#(X)active#(U91(tt, IL, M, N)) → cons#(N, take(M, IL))
U12#(ok(X)) → U12#(X)active#(U22(X)) → active#(X)
active#(s(X)) → active#(X)U63#(mark(X)) → U63#(X)
active#(isNatIList(V)) → U31#(isNatIListKind(V), V)U21#(ok(X1), ok(X2)) → U21#(X1, X2)
active#(take(0, IL)) → isNatIList#(IL)active#(U61(tt, V1, V2)) → U62#(isNat(V1), V2)
proper#(U11(X1, X2)) → proper#(X1)active#(isNatIList(V)) → isNatIListKind#(V)
proper#(U62(X1, X2)) → U62#(proper(X1), proper(X2))proper#(U41(X1, X2, X3)) → proper#(X2)
active#(U62(tt, V2)) → isNatIList#(V2)active#(take(X1, X2)) → take#(active(X1), X2)
proper#(isNatKind(X)) → proper#(X)proper#(U11(X1, X2)) → proper#(X2)
active#(length(cons(N, L))) → U71#(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L)active#(U51(tt, V1, V2)) → U52#(isNat(V1), V2)
active#(U43(X)) → U43#(active(X))active#(take(X1, X2)) → active#(X2)
proper#(U61(X1, X2, X3)) → U61#(proper(X1), proper(X2), proper(X3))active#(U52(tt, V2)) → U53#(isNatList(V2))
isNat#(ok(X)) → isNat#(X)isNatIList#(ok(X)) → isNatIList#(X)
active#(U41(X1, X2, X3)) → active#(X1)active#(isNat(s(V1))) → isNatKind#(V1)
active#(isNatKind(length(V1))) → isNatIListKind#(V1)active#(take(s(M), cons(N, IL))) → isNat#(M)
active#(isNatList(cons(V1, V2))) → isNatIListKind#(V2)proper#(U51(X1, X2, X3)) → proper#(X1)
proper#(U32(X)) → U32#(proper(X))active#(U31(tt, V)) → U32#(isNatList(V))
proper#(U22(X)) → proper#(X)proper#(U61(X1, X2, X3)) → proper#(X1)
active#(U53(X)) → U53#(active(X))active#(isNatList(cons(V1, V2))) → U51#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
active#(U62(X1, X2)) → U62#(active(X1), X2)active#(U61(X1, X2, X3)) → active#(X1)
proper#(U51(X1, X2, X3)) → proper#(X2)U51#(ok(X1), ok(X2), ok(X3)) → U51#(X1, X2, X3)
proper#(U62(X1, X2)) → proper#(X2)proper#(isNatIListKind(X)) → proper#(X)
cons#(mark(X1), X2) → cons#(X1, X2)active#(U52(X1, X2)) → U52#(active(X1), X2)
top#(ok(X)) → active#(X)active#(take(s(M), cons(N, IL))) → isNatIListKind#(IL)
active#(isNatList(cons(V1, V2))) → and#(isNatKind(V1), isNatIListKind(V2))proper#(U42(X1, X2)) → proper#(X1)
U62#(ok(X1), ok(X2)) → U62#(X1, X2)active#(U63(X)) → active#(X)
U71#(mark(X1), X2) → U71#(X1, X2)proper#(isNat(X)) → isNat#(proper(X))
active#(isNat(length(V1))) → isNatIListKind#(V1)proper#(U81(X)) → U81#(proper(X))
U51#(mark(X1), X2, X3) → U51#(X1, X2, X3)active#(U61(X1, X2, X3)) → U61#(active(X1), X2, X3)
proper#(U12(X)) → proper#(X)proper#(U91(X1, X2, X3, X4)) → proper#(X3)
proper#(U22(X)) → U22#(proper(X))active#(s(X)) → s#(active(X))
s#(ok(X)) → s#(X)proper#(length(X)) → proper#(X)
active#(take(X1, X2)) → take#(X1, active(X2))proper#(s(X)) → s#(proper(X))
active#(zeros) → cons#(0, zeros)active#(isNatList(take(V1, V2))) → isNatIListKind#(V2)
active#(isNatIListKind(take(V1, V2))) → isNatIListKind#(V2)top#(ok(X)) → top#(active(X))
active#(U51(tt, V1, V2)) → isNat#(V1)proper#(U42(X1, X2)) → proper#(X2)
proper#(U31(X1, X2)) → proper#(X1)U32#(ok(X)) → U32#(X)
U11#(ok(X1), ok(X2)) → U11#(X1, X2)active#(U71(tt, L)) → length#(L)
active#(U81(X)) → U81#(active(X))proper#(isNatIList(X)) → isNatIList#(proper(X))
proper#(U52(X1, X2)) → U52#(proper(X1), proper(X2))active#(take(s(M), cons(N, IL))) → and#(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))))
active#(cons(X1, X2)) → cons#(active(X1), X2)active#(U42(tt, V2)) → U43#(isNatIList(V2))
U91#(ok(X1), ok(X2), ok(X3), ok(X4)) → U91#(X1, X2, X3, X4)U62#(mark(X1), X2) → U62#(X1, X2)
active#(U11(X1, X2)) → active#(X1)active#(take(s(M), cons(N, IL))) → and#(isNatIList(IL), isNatIListKind(IL))
top#(mark(X)) → top#(proper(X))proper#(cons(X1, X2)) → proper#(X2)
proper#(isNatIList(X)) → proper#(X)active#(U62(tt, V2)) → U63#(isNatIList(V2))
active#(U91(X1, X2, X3, X4)) → active#(X1)proper#(U61(X1, X2, X3)) → proper#(X2)
isNatList#(ok(X)) → isNatList#(X)active#(U63(X)) → U63#(active(X))
active#(U31(tt, V)) → isNatList#(V)active#(length(cons(N, L))) → isNatIListKind#(L)
proper#(U91(X1, X2, X3, X4)) → proper#(X4)active#(take(0, IL)) → and#(isNatIList(IL), isNatIListKind(IL))
proper#(U43(X)) → U43#(proper(X))proper#(U51(X1, X2, X3)) → U51#(proper(X1), proper(X2), proper(X3))
active#(U71(X1, X2)) → U71#(active(X1), X2)active#(take(s(M), cons(N, IL))) → and#(isNat(N), isNatKind(N))
proper#(U53(X)) → U53#(proper(X))proper#(U61(X1, X2, X3)) → proper#(X3)
proper#(U41(X1, X2, X3)) → proper#(X3)active#(U42(X1, X2)) → active#(X1)
proper#(and(X1, X2)) → proper#(X1)active#(U43(X)) → active#(X)
U53#(ok(X)) → U53#(X)active#(U41(tt, V1, V2)) → isNat#(V1)
proper#(U21(X1, X2)) → proper#(X2)active#(U31(X1, X2)) → U31#(active(X1), X2)
proper#(U71(X1, X2)) → proper#(X1)proper#(isNatIListKind(X)) → isNatIListKind#(proper(X))
U41#(mark(X1), X2, X3) → U41#(X1, X2, X3)proper#(U51(X1, X2, X3)) → proper#(X3)
active#(U71(tt, L)) → s#(length(L))active#(isNatKind(s(V1))) → isNatKind#(V1)
proper#(U21(X1, X2)) → U21#(proper(X1), proper(X2))proper#(U53(X)) → proper#(X)
active#(length(X)) → length#(active(X))U42#(ok(X1), ok(X2)) → U42#(X1, X2)
active#(U32(X)) → U32#(active(X))active#(isNatIList(cons(V1, V2))) → isNatKind#(V1)
proper#(U91(X1, X2, X3, X4)) → U91#(proper(X1), proper(X2), proper(X3), proper(X4))proper#(U81(X)) → proper#(X)
U31#(mark(X1), X2) → U31#(X1, X2)proper#(U52(X1, X2)) → proper#(X2)
active#(U21(X1, X2)) → active#(X1)active#(isNatIList(cons(V1, V2))) → U41#(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
proper#(cons(X1, X2)) → cons#(proper(X1), proper(X2))U21#(mark(X1), X2) → U21#(X1, X2)
active#(isNatList(cons(V1, V2))) → isNatKind#(V1)active#(and(X1, X2)) → active#(X1)

Rewrite Rules

active(zeros) → mark(cons(0, zeros))active(U11(tt, V1)) → mark(U12(isNatList(V1)))
active(U12(tt)) → mark(tt)active(U21(tt, V1)) → mark(U22(isNat(V1)))
active(U22(tt)) → mark(tt)active(U31(tt, V)) → mark(U32(isNatList(V)))
active(U32(tt)) → mark(tt)active(U41(tt, V1, V2)) → mark(U42(isNat(V1), V2))
active(U42(tt, V2)) → mark(U43(isNatIList(V2)))active(U43(tt)) → mark(tt)
active(U51(tt, V1, V2)) → mark(U52(isNat(V1), V2))active(U52(tt, V2)) → mark(U53(isNatList(V2)))
active(U53(tt)) → mark(tt)active(U61(tt, V1, V2)) → mark(U62(isNat(V1), V2))
active(U62(tt, V2)) → mark(U63(isNatIList(V2)))active(U63(tt)) → mark(tt)
active(U71(tt, L)) → mark(s(length(L)))active(U81(tt)) → mark(nil)
active(U91(tt, IL, M, N)) → mark(cons(N, take(M, IL)))active(and(tt, X)) → mark(X)
active(isNat(0)) → mark(tt)active(isNat(length(V1))) → mark(U11(isNatIListKind(V1), V1))
active(isNat(s(V1))) → mark(U21(isNatKind(V1), V1))active(isNatIList(V)) → mark(U31(isNatIListKind(V), V))
active(isNatIList(zeros)) → mark(tt)active(isNatIList(cons(V1, V2))) → mark(U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))
active(isNatIListKind(nil)) → mark(tt)active(isNatIListKind(zeros)) → mark(tt)
active(isNatIListKind(cons(V1, V2))) → mark(and(isNatKind(V1), isNatIListKind(V2)))active(isNatIListKind(take(V1, V2))) → mark(and(isNatKind(V1), isNatIListKind(V2)))
active(isNatKind(0)) → mark(tt)active(isNatKind(length(V1))) → mark(isNatIListKind(V1))
active(isNatKind(s(V1))) → mark(isNatKind(V1))active(isNatList(nil)) → mark(tt)
active(isNatList(cons(V1, V2))) → mark(U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))active(isNatList(take(V1, V2))) → mark(U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))
active(length(nil)) → mark(0)active(length(cons(N, L))) → mark(U71(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L))
active(take(0, IL)) → mark(U81(and(isNatIList(IL), isNatIListKind(IL))))active(take(s(M), cons(N, IL))) → mark(U91(and(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))), IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X)) → U12(active(X))active(U21(X1, X2)) → U21(active(X1), X2)
active(U22(X)) → U22(active(X))active(U31(X1, X2)) → U31(active(X1), X2)
active(U32(X)) → U32(active(X))active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(U42(X1, X2)) → U42(active(X1), X2)active(U43(X)) → U43(active(X))
active(U51(X1, X2, X3)) → U51(active(X1), X2, X3)active(U52(X1, X2)) → U52(active(X1), X2)
active(U53(X)) → U53(active(X))active(U61(X1, X2, X3)) → U61(active(X1), X2, X3)
active(U62(X1, X2)) → U62(active(X1), X2)active(U63(X)) → U63(active(X))
active(U71(X1, X2)) → U71(active(X1), X2)active(s(X)) → s(active(X))
active(length(X)) → length(active(X))active(U81(X)) → U81(active(X))
active(U91(X1, X2, X3, X4)) → U91(active(X1), X2, X3, X4)active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))active(and(X1, X2)) → and(active(X1), X2)
cons(mark(X1), X2) → mark(cons(X1, X2))U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X)) → mark(U12(X))U21(mark(X1), X2) → mark(U21(X1, X2))
U22(mark(X)) → mark(U22(X))U31(mark(X1), X2) → mark(U31(X1, X2))
U32(mark(X)) → mark(U32(X))U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
U42(mark(X1), X2) → mark(U42(X1, X2))U43(mark(X)) → mark(U43(X))
U51(mark(X1), X2, X3) → mark(U51(X1, X2, X3))U52(mark(X1), X2) → mark(U52(X1, X2))
U53(mark(X)) → mark(U53(X))U61(mark(X1), X2, X3) → mark(U61(X1, X2, X3))
U62(mark(X1), X2) → mark(U62(X1, X2))U63(mark(X)) → mark(U63(X))
U71(mark(X1), X2) → mark(U71(X1, X2))s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))U81(mark(X)) → mark(U81(X))
U91(mark(X1), X2, X3, X4) → mark(U91(X1, X2, X3, X4))take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))and(mark(X1), X2) → mark(and(X1, X2))
proper(zeros) → ok(zeros)proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)proper(U12(X)) → U12(proper(X))
proper(isNatList(X)) → isNatList(proper(X))proper(U21(X1, X2)) → U21(proper(X1), proper(X2))
proper(U22(X)) → U22(proper(X))proper(isNat(X)) → isNat(proper(X))
proper(U31(X1, X2)) → U31(proper(X1), proper(X2))proper(U32(X)) → U32(proper(X))
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))proper(U42(X1, X2)) → U42(proper(X1), proper(X2))
proper(U43(X)) → U43(proper(X))proper(isNatIList(X)) → isNatIList(proper(X))
proper(U51(X1, X2, X3)) → U51(proper(X1), proper(X2), proper(X3))proper(U52(X1, X2)) → U52(proper(X1), proper(X2))
proper(U53(X)) → U53(proper(X))proper(U61(X1, X2, X3)) → U61(proper(X1), proper(X2), proper(X3))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))proper(U63(X)) → U63(proper(X))
proper(U71(X1, X2)) → U71(proper(X1), proper(X2))proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))proper(U81(X)) → U81(proper(X))
proper(nil) → ok(nil)proper(U91(X1, X2, X3, X4)) → U91(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNatIListKind(X)) → isNatIListKind(proper(X))proper(isNatKind(X)) → isNatKind(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X)) → ok(U12(X))isNatList(ok(X)) → ok(isNatList(X))
U21(ok(X1), ok(X2)) → ok(U21(X1, X2))U22(ok(X)) → ok(U22(X))
isNat(ok(X)) → ok(isNat(X))U31(ok(X1), ok(X2)) → ok(U31(X1, X2))
U32(ok(X)) → ok(U32(X))U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
U42(ok(X1), ok(X2)) → ok(U42(X1, X2))U43(ok(X)) → ok(U43(X))
isNatIList(ok(X)) → ok(isNatIList(X))U51(ok(X1), ok(X2), ok(X3)) → ok(U51(X1, X2, X3))
U52(ok(X1), ok(X2)) → ok(U52(X1, X2))U53(ok(X)) → ok(U53(X))
U61(ok(X1), ok(X2), ok(X3)) → ok(U61(X1, X2, X3))U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
U63(ok(X)) → ok(U63(X))U71(ok(X1), ok(X2)) → ok(U71(X1, X2))
s(ok(X)) → ok(s(X))length(ok(X)) → ok(length(X))
U81(ok(X)) → ok(U81(X))U91(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U91(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNatIListKind(ok(X)) → ok(isNatIListKind(X))isNatKind(ok(X)) → ok(isNatKind(X))
top(mark(X)) → top(proper(X))top(ok(X)) → top(active(X))

Original Signature

Termination of terms over the following signature is verified: isNatIListKind, isNat, U63, U62, U43, U61, U42, U41, U91, length, ok, proper, U21, top, U22, cons, isNatIList, isNatKind, mark, and, U71, 0, isNatList, U51, s, tt, zeros, take, U53, U81, U52, U11, active, U12, U31, U32, nil