(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.

(1) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(2) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(zeros) → MARK(cons(0, zeros))
ACTIVE(zeros) → CONS(0, zeros)
ACTIVE(U11(tt, V1)) → MARK(U12(isNatList(V1)))
ACTIVE(U11(tt, V1)) → U121(isNatList(V1))
ACTIVE(U11(tt, V1)) → ISNATLIST(V1)
ACTIVE(U12(tt)) → MARK(tt)
ACTIVE(U21(tt, V1)) → MARK(U22(isNat(V1)))
ACTIVE(U21(tt, V1)) → U221(isNat(V1))
ACTIVE(U21(tt, V1)) → ISNAT(V1)
ACTIVE(U22(tt)) → MARK(tt)
ACTIVE(U31(tt, V)) → MARK(U32(isNatList(V)))
ACTIVE(U31(tt, V)) → U321(isNatList(V))
ACTIVE(U31(tt, V)) → ISNATLIST(V)
ACTIVE(U32(tt)) → MARK(tt)
ACTIVE(U41(tt, V1, V2)) → MARK(U42(isNat(V1), V2))
ACTIVE(U41(tt, V1, V2)) → U421(isNat(V1), V2)
ACTIVE(U41(tt, V1, V2)) → ISNAT(V1)
ACTIVE(U42(tt, V2)) → MARK(U43(isNatIList(V2)))
ACTIVE(U42(tt, V2)) → U431(isNatIList(V2))
ACTIVE(U42(tt, V2)) → ISNATILIST(V2)
ACTIVE(U43(tt)) → MARK(tt)
ACTIVE(U51(tt, V1, V2)) → MARK(U52(isNat(V1), V2))
ACTIVE(U51(tt, V1, V2)) → U521(isNat(V1), V2)
ACTIVE(U51(tt, V1, V2)) → ISNAT(V1)
ACTIVE(U52(tt, V2)) → MARK(U53(isNatList(V2)))
ACTIVE(U52(tt, V2)) → U531(isNatList(V2))
ACTIVE(U52(tt, V2)) → ISNATLIST(V2)
ACTIVE(U53(tt)) → MARK(tt)
ACTIVE(U61(tt, V1, V2)) → MARK(U62(isNat(V1), V2))
ACTIVE(U61(tt, V1, V2)) → U621(isNat(V1), V2)
ACTIVE(U61(tt, V1, V2)) → ISNAT(V1)
ACTIVE(U62(tt, V2)) → MARK(U63(isNatIList(V2)))
ACTIVE(U62(tt, V2)) → U631(isNatIList(V2))
ACTIVE(U62(tt, V2)) → ISNATILIST(V2)
ACTIVE(U63(tt)) → MARK(tt)
ACTIVE(U71(tt, L)) → MARK(s(length(L)))
ACTIVE(U71(tt, L)) → S(length(L))
ACTIVE(U71(tt, L)) → LENGTH(L)
ACTIVE(U81(tt)) → MARK(nil)
ACTIVE(U91(tt, IL, M, N)) → MARK(cons(N, take(M, IL)))
ACTIVE(U91(tt, IL, M, N)) → CONS(N, take(M, IL))
ACTIVE(U91(tt, IL, M, 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(length(V1))) → U111(isNatIListKind(V1), V1)
ACTIVE(isNat(length(V1))) → ISNATILISTKIND(V1)
ACTIVE(isNat(s(V1))) → MARK(U21(isNatKind(V1), V1))
ACTIVE(isNat(s(V1))) → U211(isNatKind(V1), V1)
ACTIVE(isNat(s(V1))) → ISNATKIND(V1)
ACTIVE(isNatIList(V)) → MARK(U31(isNatIListKind(V), V))
ACTIVE(isNatIList(V)) → U311(isNatIListKind(V), V)
ACTIVE(isNatIList(V)) → ISNATILISTKIND(V)
ACTIVE(isNatIList(zeros)) → MARK(tt)
ACTIVE(isNatIList(cons(V1, V2))) → MARK(U41(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))
ACTIVE(isNatIList(cons(V1, V2))) → U411(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
ACTIVE(isNatIList(cons(V1, V2))) → AND(isNatKind(V1), isNatIListKind(V2))
ACTIVE(isNatIList(cons(V1, V2))) → ISNATKIND(V1)
ACTIVE(isNatIList(cons(V1, V2))) → ISNATILISTKIND(V2)
ACTIVE(isNatIListKind(nil)) → MARK(tt)
ACTIVE(isNatIListKind(zeros)) → MARK(tt)
ACTIVE(isNatIListKind(cons(V1, V2))) → MARK(and(isNatKind(V1), isNatIListKind(V2)))
ACTIVE(isNatIListKind(cons(V1, V2))) → AND(isNatKind(V1), isNatIListKind(V2))
ACTIVE(isNatIListKind(cons(V1, V2))) → ISNATKIND(V1)
ACTIVE(isNatIListKind(cons(V1, V2))) → ISNATILISTKIND(V2)
ACTIVE(isNatIListKind(take(V1, V2))) → MARK(and(isNatKind(V1), isNatIListKind(V2)))
ACTIVE(isNatIListKind(take(V1, V2))) → AND(isNatKind(V1), isNatIListKind(V2))
ACTIVE(isNatIListKind(take(V1, V2))) → ISNATKIND(V1)
ACTIVE(isNatIListKind(take(V1, V2))) → ISNATILISTKIND(V2)
ACTIVE(isNatKind(0)) → MARK(tt)
ACTIVE(isNatKind(length(V1))) → MARK(isNatIListKind(V1))
ACTIVE(isNatKind(length(V1))) → ISNATILISTKIND(V1)
ACTIVE(isNatKind(s(V1))) → MARK(isNatKind(V1))
ACTIVE(isNatKind(s(V1))) → ISNATKIND(V1)
ACTIVE(isNatList(nil)) → MARK(tt)
ACTIVE(isNatList(cons(V1, V2))) → MARK(U51(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))
ACTIVE(isNatList(cons(V1, V2))) → U511(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
ACTIVE(isNatList(cons(V1, V2))) → AND(isNatKind(V1), isNatIListKind(V2))
ACTIVE(isNatList(cons(V1, V2))) → ISNATKIND(V1)
ACTIVE(isNatList(cons(V1, V2))) → ISNATILISTKIND(V2)
ACTIVE(isNatList(take(V1, V2))) → MARK(U61(and(isNatKind(V1), isNatIListKind(V2)), V1, V2))
ACTIVE(isNatList(take(V1, V2))) → U611(and(isNatKind(V1), isNatIListKind(V2)), V1, V2)
ACTIVE(isNatList(take(V1, V2))) → AND(isNatKind(V1), isNatIListKind(V2))
ACTIVE(isNatList(take(V1, V2))) → ISNATKIND(V1)
ACTIVE(isNatList(take(V1, V2))) → ISNATILISTKIND(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(length(cons(N, L))) → U711(and(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N))), L)
ACTIVE(length(cons(N, L))) → AND(and(isNatList(L), isNatIListKind(L)), and(isNat(N), isNatKind(N)))
ACTIVE(length(cons(N, L))) → AND(isNatList(L), isNatIListKind(L))
ACTIVE(length(cons(N, L))) → ISNATLIST(L)
ACTIVE(length(cons(N, L))) → ISNATILISTKIND(L)
ACTIVE(length(cons(N, L))) → AND(isNat(N), isNatKind(N))
ACTIVE(length(cons(N, L))) → ISNAT(N)
ACTIVE(length(cons(N, L))) → ISNATKIND(N)
ACTIVE(take(0, IL)) → MARK(U81(and(isNatIList(IL), isNatIListKind(IL))))
ACTIVE(take(0, IL)) → U811(and(isNatIList(IL), isNatIListKind(IL)))
ACTIVE(take(0, IL)) → AND(isNatIList(IL), isNatIListKind(IL))
ACTIVE(take(0, IL)) → ISNATILIST(IL)
ACTIVE(take(0, 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(take(s(M), cons(N, IL))) → U911(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))) → AND(and(isNatIList(IL), isNatIListKind(IL)), and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))))
ACTIVE(take(s(M), cons(N, IL))) → AND(isNatIList(IL), isNatIListKind(IL))
ACTIVE(take(s(M), cons(N, IL))) → ISNATILIST(IL)
ACTIVE(take(s(M), cons(N, IL))) → ISNATILISTKIND(IL)
ACTIVE(take(s(M), cons(N, IL))) → AND(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N)))
ACTIVE(take(s(M), cons(N, IL))) → AND(isNat(M), isNatKind(M))
ACTIVE(take(s(M), cons(N, IL))) → ISNAT(M)
ACTIVE(take(s(M), cons(N, IL))) → ISNATKIND(M)
ACTIVE(take(s(M), cons(N, IL))) → AND(isNat(N), isNatKind(N))
ACTIVE(take(s(M), cons(N, IL))) → ISNAT(N)
ACTIVE(take(s(M), cons(N, IL))) → ISNATKIND(N)
MARK(zeros) → ACTIVE(zeros)
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
MARK(cons(X1, X2)) → CONS(mark(X1), X2)
MARK(cons(X1, X2)) → MARK(X1)
MARK(0) → ACTIVE(0)
MARK(U11(X1, X2)) → ACTIVE(U11(mark(X1), X2))
MARK(U11(X1, X2)) → U111(mark(X1), X2)
MARK(U11(X1, X2)) → MARK(X1)
MARK(tt) → ACTIVE(tt)
MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U12(X)) → U121(mark(X))
MARK(U12(X)) → MARK(X)
MARK(isNatList(X)) → ACTIVE(isNatList(X))
MARK(U21(X1, X2)) → ACTIVE(U21(mark(X1), X2))
MARK(U21(X1, X2)) → U211(mark(X1), X2)
MARK(U21(X1, X2)) → MARK(X1)
MARK(U22(X)) → ACTIVE(U22(mark(X)))
MARK(U22(X)) → U221(mark(X))
MARK(U22(X)) → MARK(X)
MARK(isNat(X)) → ACTIVE(isNat(X))
MARK(U31(X1, X2)) → ACTIVE(U31(mark(X1), X2))
MARK(U31(X1, X2)) → U311(mark(X1), X2)
MARK(U31(X1, X2)) → MARK(X1)
MARK(U32(X)) → ACTIVE(U32(mark(X)))
MARK(U32(X)) → U321(mark(X))
MARK(U32(X)) → MARK(X)
MARK(U41(X1, X2, X3)) → ACTIVE(U41(mark(X1), X2, X3))
MARK(U41(X1, X2, X3)) → U411(mark(X1), X2, X3)
MARK(U41(X1, X2, X3)) → MARK(X1)
MARK(U42(X1, X2)) → ACTIVE(U42(mark(X1), X2))
MARK(U42(X1, X2)) → U421(mark(X1), X2)
MARK(U42(X1, X2)) → MARK(X1)
MARK(U43(X)) → ACTIVE(U43(mark(X)))
MARK(U43(X)) → U431(mark(X))
MARK(U43(X)) → MARK(X)
MARK(isNatIList(X)) → ACTIVE(isNatIList(X))
MARK(U51(X1, X2, X3)) → ACTIVE(U51(mark(X1), X2, X3))
MARK(U51(X1, X2, X3)) → U511(mark(X1), X2, X3)
MARK(U51(X1, X2, X3)) → MARK(X1)
MARK(U52(X1, X2)) → ACTIVE(U52(mark(X1), X2))
MARK(U52(X1, X2)) → U521(mark(X1), X2)
MARK(U52(X1, X2)) → MARK(X1)
MARK(U53(X)) → ACTIVE(U53(mark(X)))
MARK(U53(X)) → U531(mark(X))
MARK(U53(X)) → MARK(X)
MARK(U61(X1, X2, X3)) → ACTIVE(U61(mark(X1), X2, X3))
MARK(U61(X1, X2, X3)) → U611(mark(X1), X2, X3)
MARK(U61(X1, X2, X3)) → MARK(X1)
MARK(U62(X1, X2)) → ACTIVE(U62(mark(X1), X2))
MARK(U62(X1, X2)) → U621(mark(X1), X2)
MARK(U62(X1, X2)) → MARK(X1)
MARK(U63(X)) → ACTIVE(U63(mark(X)))
MARK(U63(X)) → U631(mark(X))
MARK(U63(X)) → MARK(X)
MARK(U71(X1, X2)) → ACTIVE(U71(mark(X1), X2))
MARK(U71(X1, X2)) → U711(mark(X1), X2)
MARK(U71(X1, X2)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
MARK(s(X)) → S(mark(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(mark(X)))
MARK(length(X)) → LENGTH(mark(X))
MARK(length(X)) → MARK(X)
MARK(U81(X)) → ACTIVE(U81(mark(X)))
MARK(U81(X)) → U811(mark(X))
MARK(U81(X)) → MARK(X)
MARK(nil) → ACTIVE(nil)
MARK(U91(X1, X2, X3, X4)) → ACTIVE(U91(mark(X1), X2, X3, X4))
MARK(U91(X1, X2, X3, X4)) → U911(mark(X1), X2, X3, X4)
MARK(U91(X1, X2, X3, X4)) → MARK(X1)
MARK(take(X1, X2)) → ACTIVE(take(mark(X1), mark(X2)))
MARK(take(X1, X2)) → TAKE(mark(X1), mark(X2))
MARK(take(X1, X2)) → MARK(X1)
MARK(take(X1, X2)) → MARK(X2)
MARK(and(X1, X2)) → ACTIVE(and(mark(X1), X2))
MARK(and(X1, X2)) → AND(mark(X1), X2)
MARK(and(X1, X2)) → MARK(X1)
MARK(isNatIListKind(X)) → ACTIVE(isNatIListKind(X))
MARK(isNatKind(X)) → ACTIVE(isNatKind(X))
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(X1, mark(X2)) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
U121(mark(X)) → U121(X)
U121(active(X)) → U121(X)
ISNATLIST(mark(X)) → ISNATLIST(X)
ISNATLIST(active(X)) → ISNATLIST(X)
U211(mark(X1), X2) → U211(X1, X2)
U211(X1, mark(X2)) → U211(X1, X2)
U211(active(X1), X2) → U211(X1, X2)
U211(X1, active(X2)) → U211(X1, X2)
U221(mark(X)) → U221(X)
U221(active(X)) → U221(X)
ISNAT(mark(X)) → ISNAT(X)
ISNAT(active(X)) → ISNAT(X)
U311(mark(X1), X2) → U311(X1, X2)
U311(X1, mark(X2)) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)
U321(mark(X)) → U321(X)
U321(active(X)) → U321(X)
U411(mark(X1), X2, X3) → U411(X1, X2, X3)
U411(X1, mark(X2), X3) → U411(X1, X2, X3)
U411(X1, X2, mark(X3)) → U411(X1, X2, X3)
U411(active(X1), X2, X3) → U411(X1, X2, X3)
U411(X1, active(X2), X3) → U411(X1, X2, X3)
U411(X1, X2, active(X3)) → U411(X1, X2, X3)
U421(mark(X1), X2) → U421(X1, X2)
U421(X1, mark(X2)) → U421(X1, X2)
U421(active(X1), X2) → U421(X1, X2)
U421(X1, active(X2)) → U421(X1, X2)
U431(mark(X)) → U431(X)
U431(active(X)) → U431(X)
ISNATILIST(mark(X)) → ISNATILIST(X)
ISNATILIST(active(X)) → ISNATILIST(X)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
U521(mark(X1), X2) → U521(X1, X2)
U521(X1, mark(X2)) → U521(X1, X2)
U521(active(X1), X2) → U521(X1, X2)
U521(X1, active(X2)) → U521(X1, X2)
U531(mark(X)) → U531(X)
U531(active(X)) → U531(X)
U611(mark(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, mark(X2), X3) → U611(X1, X2, X3)
U611(X1, X2, mark(X3)) → U611(X1, X2, X3)
U611(active(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, active(X2), X3) → U611(X1, X2, X3)
U611(X1, X2, active(X3)) → U611(X1, X2, X3)
U621(mark(X1), X2) → U621(X1, X2)
U621(X1, mark(X2)) → U621(X1, X2)
U621(active(X1), X2) → U621(X1, X2)
U621(X1, active(X2)) → U621(X1, X2)
U631(mark(X)) → U631(X)
U631(active(X)) → U631(X)
U711(mark(X1), X2) → U711(X1, X2)
U711(X1, mark(X2)) → U711(X1, X2)
U711(active(X1), X2) → U711(X1, X2)
U711(X1, active(X2)) → U711(X1, X2)
S(mark(X)) → S(X)
S(active(X)) → S(X)
LENGTH(mark(X)) → LENGTH(X)
LENGTH(active(X)) → LENGTH(X)
U811(mark(X)) → U811(X)
U811(active(X)) → U811(X)
U911(mark(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, mark(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, mark(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, mark(X4)) → U911(X1, X2, X3, X4)
U911(active(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, active(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, active(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, active(X4)) → U911(X1, X2, X3, X4)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(active(X1), X2) → TAKE(X1, X2)
TAKE(X1, active(X2)) → TAKE(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)
AND(X1, mark(X2)) → AND(X1, X2)
AND(active(X1), X2) → AND(X1, X2)
AND(X1, active(X2)) → AND(X1, X2)
ISNATILISTKIND(mark(X)) → ISNATILISTKIND(X)
ISNATILISTKIND(active(X)) → ISNATILISTKIND(X)
ISNATKIND(mark(X)) → ISNATKIND(X)
ISNATKIND(active(X)) → ISNATKIND(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(3) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 29 SCCs with 113 less nodes.

(4) Complex Obligation (AND)

(5) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNATKIND(active(X)) → ISNATKIND(X)
ISNATKIND(mark(X)) → ISNATKIND(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(6) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNATKIND(active(X)) → ISNATKIND(X)
ISNATKIND(mark(X)) → ISNATKIND(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNATKIND(x1)  =  ISNATKIND(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
ISNATKIND1: [1]
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(7) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(8) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(9) TRUE

(10) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNATILISTKIND(active(X)) → ISNATILISTKIND(X)
ISNATILISTKIND(mark(X)) → ISNATILISTKIND(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(11) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNATILISTKIND(active(X)) → ISNATILISTKIND(X)
ISNATILISTKIND(mark(X)) → ISNATILISTKIND(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNATILISTKIND(x1)  =  ISNATILISTKIND(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
ISNATILISTKIND1: [1]
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(12) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(13) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(14) TRUE

(15) Obligation:

Q DP problem:
The TRS P consists of the following rules:

AND(X1, mark(X2)) → AND(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)
AND(active(X1), X2) → AND(X1, X2)
AND(X1, active(X2)) → AND(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(16) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


AND(X1, mark(X2)) → AND(X1, X2)
AND(mark(X1), X2) → AND(X1, X2)
AND(active(X1), X2) → AND(X1, X2)
AND(X1, active(X2)) → AND(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
AND(x1, x2)  =  AND(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[AND2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
AND2: [1,2]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(17) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(18) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(19) TRUE

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(active(X1), X2) → TAKE(X1, X2)
TAKE(X1, active(X2)) → TAKE(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(21) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(active(X1), X2) → TAKE(X1, X2)
TAKE(X1, active(X2)) → TAKE(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
TAKE(x1, x2)  =  TAKE(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[TAKE2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
TAKE2: [1,2]
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(22) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(23) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(24) TRUE

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U911(X1, mark(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(mark(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, mark(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, mark(X4)) → U911(X1, X2, X3, X4)
U911(active(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, active(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, active(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, active(X4)) → U911(X1, X2, X3, X4)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(26) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U911(X1, mark(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(mark(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, mark(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, mark(X4)) → U911(X1, X2, X3, X4)
U911(active(X1), X2, X3, X4) → U911(X1, X2, X3, X4)
U911(X1, active(X2), X3, X4) → U911(X1, X2, X3, X4)
U911(X1, X2, active(X3), X4) → U911(X1, X2, X3, X4)
U911(X1, X2, X3, active(X4)) → U911(X1, X2, X3, X4)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U911(x1, x2, x3, x4)  =  U911(x1, x2, x3, x4)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat(x1)
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51(x3)
U52(x1, x2)  =  U52(x2)
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[isNatList1, U511, U61, U62, U63] > [U91, take, isNatKind] > [mark1, active1, isNatIListKind] > zeros > [0, U71, s, length] > U81 > nil
[isNatList1, U511, U61, U62, U63] > [U91, take, isNatKind] > [mark1, active1, isNatIListKind] > isNat1 > [U11, U12] > [tt, U42, U43, U521, U53] > [0, U71, s, length] > U81 > nil
[isNatList1, U511, U61, U62, U63] > [U91, take, isNatKind] > [mark1, active1, isNatIListKind] > isNat1 > [U21, U22] > [tt, U42, U43, U521, U53] > [0, U71, s, length] > U81 > nil
[isNatList1, U511, U61, U62, U63] > [U91, take, isNatKind] > [mark1, active1, isNatIListKind] > [U31, U32, isNatIList1] > U411 > [tt, U42, U43, U521, U53] > [0, U71, s, length] > U81 > nil

Status:
U22: []
U411: [1]
U31: []
U42: []
mark1: [1]
U11: []
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
U521: [1]
isNatIList1: [1]
isNatKind: []
U81: []
isNat1: [1]
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U91^14: [4,2,3,1]
U511: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(27) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(28) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(29) TRUE

(30) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U811(active(X)) → U811(X)
U811(mark(X)) → U811(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(31) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U811(active(X)) → U811(X)
U811(mark(X)) → U811(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U811(x1)  =  U811(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U81^11: [1]
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(32) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(33) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(34) TRUE

(35) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LENGTH(active(X)) → LENGTH(X)
LENGTH(mark(X)) → LENGTH(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(36) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


LENGTH(active(X)) → LENGTH(X)
LENGTH(mark(X)) → LENGTH(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
LENGTH(x1)  =  LENGTH(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
LENGTH1: [1]
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(37) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(38) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(39) TRUE

(40) Obligation:

Q DP problem:
The TRS P consists of the following rules:

S(active(X)) → S(X)
S(mark(X)) → S(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(41) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


S(active(X)) → S(X)
S(mark(X)) → S(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
S(x1)  =  S(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
S1: [1]
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(42) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(43) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(44) TRUE

(45) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U711(X1, mark(X2)) → U711(X1, X2)
U711(mark(X1), X2) → U711(X1, X2)
U711(active(X1), X2) → U711(X1, X2)
U711(X1, active(X2)) → U711(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(46) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U711(X1, mark(X2)) → U711(X1, X2)
U711(mark(X1), X2) → U711(X1, X2)
U711(active(X1), X2) → U711(X1, X2)
U711(X1, active(X2)) → U711(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U711(x1, x2)  =  U711(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U71^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
U71^12: [1,2]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(47) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(48) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(49) TRUE

(50) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U631(active(X)) → U631(X)
U631(mark(X)) → U631(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(51) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U631(active(X)) → U631(X)
U631(mark(X)) → U631(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U631(x1)  =  U631(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U63^11: [1]
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(52) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(53) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(54) TRUE

(55) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U621(X1, mark(X2)) → U621(X1, X2)
U621(mark(X1), X2) → U621(X1, X2)
U621(active(X1), X2) → U621(X1, X2)
U621(X1, active(X2)) → U621(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(56) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U621(X1, mark(X2)) → U621(X1, X2)
U621(X1, active(X2)) → U621(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U621(x1, x2)  =  U621(x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51(x3)
U52(x1, x2)  =  U52(x2)
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
U62^11 > [zeros, tt, isNatList1, U511, U521, U53]
[U31, isNatIList, isNatIListKind, isNatKind] > [mark1, active1] > [0, U11, U12, U71, length] > [U21, U22, s] > [zeros, tt, isNatList1, U511, U521, U53]
[U31, isNatIList, isNatIListKind, isNatKind] > [mark1, active1] > U32 > [zeros, tt, isNatList1, U511, U521, U53]
[U31, isNatIList, isNatIListKind, isNatKind] > [mark1, active1] > [U41, U42] > U43 > [zeros, tt, isNatList1, U511, U521, U53]
[U31, isNatIList, isNatIListKind, isNatKind] > [mark1, active1] > [U61, U62] > U63 > [zeros, tt, isNatList1, U511, U521, U53]
[U81, nil, U91, take] > [mark1, active1] > [0, U11, U12, U71, length] > [U21, U22, s] > [zeros, tt, isNatList1, U511, U521, U53]
[U81, nil, U91, take] > [mark1, active1] > U32 > [zeros, tt, isNatList1, U511, U521, U53]
[U81, nil, U91, take] > [mark1, active1] > [U41, U42] > U43 > [zeros, tt, isNatList1, U511, U521, U53]
[U81, nil, U91, take] > [mark1, active1] > [U61, U62] > U63 > [zeros, tt, isNatList1, U511, U521, U53]

Status:
U22: []
U31: []
U42: []
U11: []
mark1: [1]
isNatIList: []
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
U521: [1]
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U511: [1]
U62^11: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(57) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U621(mark(X1), X2) → U621(X1, X2)
U621(active(X1), X2) → U621(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(58) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U621(mark(X1), X2) → U621(X1, X2)
U621(active(X1), X2) → U621(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U621(x1, x2)  =  U621(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  cons
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  x1
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[zeros, cons, 0, U11, U12, U21, isNat, length, U91, take, isNatIListKind, isNatKind] > U22 > [mark1, active1, U71, s] > U62^12 > [tt, U31, U32, U43, U51, U52, U53]
[zeros, cons, 0, U11, U12, U21, isNat, length, U91, take, isNatIListKind, isNatKind] > U22 > [mark1, active1, U71, s] > [isNatList, U61, U62, U63] > [tt, U31, U32, U43, U51, U52, U53]
[zeros, cons, 0, U11, U12, U21, isNat, length, U91, take, isNatIListKind, isNatKind] > U22 > [mark1, active1, U71, s] > [U41, U42] > [tt, U31, U32, U43, U51, U52, U53]
[zeros, cons, 0, U11, U12, U21, isNat, length, U91, take, isNatIListKind, isNatKind] > U22 > [mark1, active1, U71, s] > [U81, nil] > [tt, U31, U32, U43, U51, U52, U53]

Status:
U22: []
U31: []
U42: []
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
cons: []
tt: []
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U62^12: [2,1]
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(59) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(60) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(61) TRUE

(62) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U611(X1, mark(X2), X3) → U611(X1, X2, X3)
U611(mark(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, X2, mark(X3)) → U611(X1, X2, X3)
U611(active(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, active(X2), X3) → U611(X1, X2, X3)
U611(X1, X2, active(X3)) → U611(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(63) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U611(X1, mark(X2), X3) → U611(X1, X2, X3)
U611(mark(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, X2, mark(X3)) → U611(X1, X2, X3)
U611(active(X1), X2, X3) → U611(X1, X2, X3)
U611(X1, active(X2), X3) → U611(X1, X2, X3)
U611(X1, X2, active(X3)) → U611(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U611(x1, x2, x3)  =  U611(x1, x2, x3)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  x1
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  x2
U32(x1)  =  U32
U41(x1, x2, x3)  =  x3
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  x1
U51(x1, x2, x3)  =  x3
U52(x1, x2)  =  x2
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
U61^13 > [zeros, tt, U21, U22, U32, U42, U43, U53, s]
isNatKind > [mark1, active1, U61, U62, U81, nil, U91, take, isNatIListKind] > [0, U71, length] > [zeros, tt, U21, U22, U32, U42, U43, U53, s]
isNatKind > [mark1, active1, U61, U62, U81, nil, U91, take, isNatIListKind] > [U11, U12, isNat] > [zeros, tt, U21, U22, U32, U42, U43, U53, s]
isNatKind > [mark1, active1, U61, U62, U81, nil, U91, take, isNatIListKind] > U63 > [zeros, tt, U21, U22, U32, U42, U43, U53, s]

Status:
U22: []
U42: []
U11: []
mark1: [1]
length: []
isNat: []
active1: [1]
U61: []
tt: []
U61^13: [3,2,1]
zeros: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(64) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(65) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(66) TRUE

(67) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U531(active(X)) → U531(X)
U531(mark(X)) → U531(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(68) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U531(active(X)) → U531(X)
U531(mark(X)) → U531(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U531(x1)  =  U531(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
U53^11: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(69) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(70) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(71) TRUE

(72) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U521(X1, mark(X2)) → U521(X1, X2)
U521(mark(X1), X2) → U521(X1, X2)
U521(active(X1), X2) → U521(X1, X2)
U521(X1, active(X2)) → U521(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(73) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U521(X1, mark(X2)) → U521(X1, X2)
U521(mark(X1), X2) → U521(X1, X2)
U521(active(X1), X2) → U521(X1, X2)
U521(X1, active(X2)) → U521(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U521(x1, x2)  =  U521(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U52^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U52^12: [1,2]
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(74) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(75) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(76) TRUE

(77) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(78) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U511(X1, X2, mark(X3)) → U511(X1, X2, X3)
U511(X1, X2, active(X3)) → U511(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U511(x1, x2, x3)  =  U511(x3)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  cons
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > U51^11
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > zeros > [cons, U91]
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > [U61, U62, U63] > [0, tt, U12, U21, U22, U32, U53, isNatIListKind, isNatKind] > [U81, nil, take] > [cons, U91]
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > s > [0, tt, U12, U21, U22, U32, U53, isNatIListKind, isNatKind] > [U81, nil, take] > [cons, U91]

Status:
U22: []
U31: []
U42: []
mark1: [1]
U11: []
isNatIList: []
length: []
U51^11: [1]
active1: [1]
U61: []
cons: []
tt: []
isNatList1: [1]
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(79) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(80) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U511(mark(X1), X2, X3) → U511(X1, X2, X3)
U511(active(X1), X2, X3) → U511(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U511(x1, x2, x3)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  x1
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  x3
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > [U41, U42, U43, isNatIList] > [U31, U32] > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > U71 > s > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > [U81, nil] > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [U21, U22, isNat] > [U11, U12] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > [U41, U42, U43, isNatIList] > [U31, U32] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > U71 > s > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > [U81, nil] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [U21, U22, isNat] > [U11, U12] > [zeros, tt, U52, U53]

Status:
U22: []
U31: []
U42: []
U11: []
mark1: [1]
isNatIList: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(81) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(82) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U511(X1, mark(X2), X3) → U511(X1, X2, X3)
U511(X1, active(X2), X3) → U511(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U511(x1, x2, x3)  =  x2
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
zeros > [mark1, active1] > [isNatList, U51, U52, U53, isNatKind] > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
zeros > [mark1, active1] > U411 > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
zeros > [mark1, active1] > U411 > U42 > U43 > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > [isNatList, U51, U52, U53, isNatKind] > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > U411 > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > U411 > U42 > U43 > [tt, U21, U22, U62, U63, isNatIListKind]

Status:
U22: []
U411: [1]
U42: []
U11: []
mark1: [1]
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
isNatList: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(83) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(84) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(85) TRUE

(86) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNATILIST(active(X)) → ISNATILIST(X)
ISNATILIST(mark(X)) → ISNATILIST(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(87) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNATILIST(active(X)) → ISNATILIST(X)
ISNATILIST(mark(X)) → ISNATILIST(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNATILIST(x1)  =  ISNATILIST(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
ISNATILIST1: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(88) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(89) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(90) TRUE

(91) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U431(active(X)) → U431(X)
U431(mark(X)) → U431(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(92) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U431(active(X)) → U431(X)
U431(mark(X)) → U431(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U431(x1)  =  U431(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
U43^11: [1]
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(93) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(94) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(95) TRUE

(96) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U421(X1, mark(X2)) → U421(X1, X2)
U421(mark(X1), X2) → U421(X1, X2)
U421(active(X1), X2) → U421(X1, X2)
U421(X1, active(X2)) → U421(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(97) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U421(X1, mark(X2)) → U421(X1, X2)
U421(X1, active(X2)) → U421(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U421(x1, x2)  =  U421(x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51(x3)
U52(x1, x2)  =  U52(x2)
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > zeros > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > U11 > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > U32 > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > U43 > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > [U91, take] > [isNatList1, U61, U62, U63] > U511 > U521 > U53 > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > [U91, take] > [isNatList1, U61, U62, U63] > isNatKind > isNatIListKind > [tt, U12] > [0, length] > [U71, s]
[U21, U22, isNat] > [U42^11, mark1, active1, U31, U411, U421, isNatIList1] > [U91, take] > U81 > nil > [tt, U12] > [0, length] > [U71, s]

Status:
U22: []
U411: [1]
U31: []
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
U521: [1]
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U421: [1]
U42^11: [1]
U511: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(98) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U421(mark(X1), X2) → U421(X1, X2)
U421(active(X1), X2) → U421(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(99) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U421(mark(X1), X2) → U421(X1, X2)
U421(active(X1), X2) → U421(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U421(x1, x2)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  cons
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  x1
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat(x1)
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U31, U32, U41, isNatIList] > [U42, U43] > [mark1, active1] > [U21, isNat1] > U22 > [U11, tt, U12, U53, U63, U81, nil] > s
[U31, U32, U41, isNatIList] > [U42, U43] > [mark1, active1] > [U61, U62, take] > [zeros, cons, 0, U51, U52, U91] > [U11, tt, U12, U53, U63, U81, nil] > s
[U31, U32, U41, isNatIList] > [U42, U43] > [mark1, active1] > [U61, U62, take] > [zeros, cons, 0, U51, U52, U91] > U71 > s
[U31, U32, U41, isNatIList] > [length, isNatIListKind, isNatKind] > [mark1, active1] > [U21, isNat1] > U22 > [U11, tt, U12, U53, U63, U81, nil] > s
[U31, U32, U41, isNatIList] > [length, isNatIListKind, isNatKind] > [mark1, active1] > [U61, U62, take] > [zeros, cons, 0, U51, U52, U91] > [U11, tt, U12, U53, U63, U81, nil] > s
[U31, U32, U41, isNatIList] > [length, isNatIListKind, isNatKind] > [mark1, active1] > [U61, U62, take] > [zeros, cons, 0, U51, U52, U91] > U71 > s

Status:
U22: []
U31: []
U42: []
U11: []
mark1: [1]
isNatIList: []
length: []
active1: [1]
U61: []
tt: []
cons: []
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
isNat1: [1]
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(100) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(101) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(102) TRUE

(103) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U411(X1, mark(X2), X3) → U411(X1, X2, X3)
U411(mark(X1), X2, X3) → U411(X1, X2, X3)
U411(X1, X2, mark(X3)) → U411(X1, X2, X3)
U411(active(X1), X2, X3) → U411(X1, X2, X3)
U411(X1, active(X2), X3) → U411(X1, X2, X3)
U411(X1, X2, active(X3)) → U411(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(104) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U411(X1, X2, mark(X3)) → U411(X1, X2, X3)
U411(X1, X2, active(X3)) → U411(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U411(x1, x2, x3)  =  U411(x3)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  cons
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > U41^11
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > zeros > [cons, U91]
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > [U61, U62, U63] > [0, tt, U12, U21, U22, U32, U53, isNatIListKind, isNatKind] > [U81, nil, take] > [cons, U91]
[mark1, active1, U11, isNatList1, U31, U41, U42, U43, isNatIList, U51, U52, U71, length] > s > [0, tt, U12, U21, U22, U32, U53, isNatIListKind, isNatKind] > [U81, nil, take] > [cons, U91]

Status:
U41^11: [1]
U22: []
U31: []
U42: []
mark1: [1]
U11: []
isNatIList: []
length: []
active1: [1]
U61: []
cons: []
tt: []
isNatList1: [1]
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(105) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U411(X1, mark(X2), X3) → U411(X1, X2, X3)
U411(mark(X1), X2, X3) → U411(X1, X2, X3)
U411(active(X1), X2, X3) → U411(X1, X2, X3)
U411(X1, active(X2), X3) → U411(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(106) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U411(mark(X1), X2, X3) → U411(X1, X2, X3)
U411(active(X1), X2, X3) → U411(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U411(x1, x2, x3)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  x1
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  x3
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > [U41, U42, U43, isNatIList] > [U31, U32] > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > U71 > s > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [0, length] > [U81, nil] > [zeros, tt, U52, U53]
[U61, U62, U63, U91, take] > isNatIListKind > [mark1, active1] > [U21, U22, isNat] > [U11, U12] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > [U41, U42, U43, isNatIList] > [U31, U32] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > U71 > s > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [0, length] > [U81, nil] > [zeros, tt, U52, U53]
isNatKind > isNatIListKind > [mark1, active1] > [U21, U22, isNat] > [U11, U12] > [zeros, tt, U52, U53]

Status:
U22: []
U31: []
U42: []
U11: []
mark1: [1]
isNatIList: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
U41: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(107) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U411(X1, mark(X2), X3) → U411(X1, X2, X3)
U411(X1, active(X2), X3) → U411(X1, X2, X3)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(108) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U411(X1, mark(X2), X3) → U411(X1, X2, X3)
U411(X1, active(X2), X3) → U411(X1, X2, X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U411(x1, x2, x3)  =  x2
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
zeros > [mark1, active1] > [isNatList, U51, U52, U53, isNatKind] > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
zeros > [mark1, active1] > U411 > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
zeros > [mark1, active1] > U411 > U42 > U43 > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > [isNatList, U51, U52, U53, isNatKind] > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > U411 > [0, U11, U12, isNat, U61, U71, s, length, U81, nil] > [tt, U21, U22, U62, U63, isNatIListKind]
[U91, take] > [U311, U32, isNatIList1] > [mark1, active1] > U411 > U42 > U43 > [tt, U21, U22, U62, U63, isNatIListKind]

Status:
U22: []
U411: [1]
U42: []
U11: []
mark1: [1]
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
isNatList: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(109) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(110) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(111) TRUE

(112) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(113) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U321(active(X)) → U321(X)
U321(mark(X)) → U321(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U321(x1)  =  U321(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
U32^11: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(114) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(115) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(116) TRUE

(117) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U311(X1, mark(X2)) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(118) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U311(X1, mark(X2)) → U311(X1, X2)
U311(mark(X1), X2) → U311(X1, X2)
U311(active(X1), X2) → U311(X1, X2)
U311(X1, active(X2)) → U311(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U311(x1, x2)  =  U311(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U31^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
U31^12: [1,2]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(119) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(120) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(121) TRUE

(122) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(123) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNAT(active(X)) → ISNAT(X)
ISNAT(mark(X)) → ISNAT(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNAT(x1)  =  ISNAT(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
ISNAT1: [1]
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(124) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(125) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(126) TRUE

(127) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U221(active(X)) → U221(X)
U221(mark(X)) → U221(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(128) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U221(active(X)) → U221(X)
U221(mark(X)) → U221(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U221(x1)  =  U221(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
U22^11: [1]
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(129) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(130) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(131) TRUE

(132) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U211(X1, mark(X2)) → U211(X1, X2)
U211(mark(X1), X2) → U211(X1, X2)
U211(active(X1), X2) → U211(X1, X2)
U211(X1, active(X2)) → U211(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(133) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U211(X1, mark(X2)) → U211(X1, X2)
U211(mark(X1), X2) → U211(X1, X2)
U211(active(X1), X2) → U211(X1, X2)
U211(X1, active(X2)) → U211(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U211(x1, x2)  =  U211(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U21^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
U21^12: [1,2]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(134) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(135) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(136) TRUE

(137) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ISNATLIST(active(X)) → ISNATLIST(X)
ISNATLIST(mark(X)) → ISNATLIST(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(138) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ISNATLIST(active(X)) → ISNATLIST(X)
ISNATLIST(mark(X)) → ISNATLIST(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ISNATLIST(x1)  =  ISNATLIST(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
ISNATLIST1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(139) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(140) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(141) TRUE

(142) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U121(active(X)) → U121(X)
U121(mark(X)) → U121(X)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(143) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U121(active(X)) → U121(X)
U121(mark(X)) → U121(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U121(x1)  =  U121(x1)
active(x1)  =  active(x1)
mark(x1)  =  mark(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList(x1)
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  x1
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U12 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > zeros
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U11, isNatList1, U51, U52, length] > U53 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > U411 > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > zeros
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > [U21, U22, U71, s] > [0, tt, U421, U43]
[U81, nil, U91, take] > [isNatIList1, U61, U62] > [isNatIListKind, isNatKind] > [active1, mark1, U63] > U311 > U32 > [0, tt, U421, U43]

Status:
U22: []
U411: [1]
U11: []
mark1: [1]
length: []
active1: [1]
U61: []
tt: []
isNatList1: [1]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U51: []
U21: []
U62: []
U32: []
U91: []
U53: []
U52: []
U12: []
s: []
U71: []
0: []
take: []
U12^11: [1]
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(144) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(145) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(146) TRUE

(147) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U111(X1, mark(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(148) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


U111(X1, mark(X2)) → U111(X1, X2)
U111(mark(X1), X2) → U111(X1, X2)
U111(active(X1), X2) → U111(X1, X2)
U111(X1, active(X2)) → U111(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
U111(x1, x2)  =  U111(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[U11^12, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
U11^12: [1,2]
zeros: []
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(149) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(150) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(151) TRUE

(152) Obligation:

Q DP problem:
The TRS P consists of the following rules:

CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(153) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
CONS(x1, x2)  =  CONS(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
zeros  =  zeros
cons(x1, x2)  =  x2
0  =  0
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31(x2)
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41(x3)
U42(x1, x2)  =  U42(x2)
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList(x1)
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U81(x1)  =  U81
nil  =  nil
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  x2
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind

Lexicographic path order with status [LPO].
Quasi-Precedence:
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > zeros > 0 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > 0 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U11, U71, length] > [U21, s] > U22 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U32 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > U421 > U43 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > [isNatList, U51, U61, U62, U63] > U52 > U53 > [tt, U12, nil, isNatIListKind]
[CONS2, mark1, active1, isNat, U311, U411, isNatIList1, isNatKind] > [U91, take] > U81 > [tt, U12, nil, isNatIListKind]

Status:
U22: []
U411: [1]
mark1: [1]
U11: []
length: []
isNat: []
active1: [1]
U61: []
tt: []
zeros: []
CONS2: [1,2]
isNatIList1: [1]
isNatKind: []
U81: []
U43: []
U63: []
nil: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
U311: [1]
U421: [1]
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(154) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(155) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(156) TRUE

(157) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(158) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
MARK(U32(X)) → ACTIVE(U32(mark(X)))
MARK(U43(X)) → ACTIVE(U43(mark(X)))
MARK(U53(X)) → ACTIVE(U53(mark(X)))
MARK(s(X)) → ACTIVE(s(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
MARK(x1)  =  MARK
cons(x1, x2)  =  cons
ACTIVE(x1)  =  x1
mark(x1)  =  mark
U11(x1, x2)  =  U11
tt  =  tt
U12(x1)  =  U12
isNatList(x1)  =  isNatList
zeros  =  zeros
0  =  0
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  and
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind
U81(x1)  =  U81
active(x1)  =  active
nil  =  nil

Lexicographic path order with status [LPO].
Quasi-Precedence:
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > cons > [mark, active] > 0
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > cons > [mark, active] > s
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > cons > [mark, active] > nil
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U32 > [mark, active] > 0
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U32 > [mark, active] > s
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U32 > [mark, active] > nil
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U43 > [mark, active] > 0
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U43 > [mark, active] > s
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U43 > [mark, active] > nil
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U53 > [mark, active] > 0
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U53 > [mark, active] > s
[MARK, U11, U12, isNatList, zeros, U21, U22, isNat, U31, U41, U42, isNatIList, U51, U52, U61, U62, U63, U71, length, U91, take, and, isNatIListKind, isNatKind, U81] > tt > U53 > [mark, active] > nil

Status:
U22: []
U31: []
U42: []
U11: []
isNatIList: []
length: []
isNat: []
U61: []
cons: []
tt: []
zeros: []
U41: []
and: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
active: []
MARK: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
mark: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(159) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(160) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


MARK(U12(X)) → ACTIVE(U12(mark(X)))
MARK(U63(X)) → ACTIVE(U63(mark(X)))
MARK(U81(X)) → ACTIVE(U81(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  x1
U11(x1, x2)  =  U11
tt  =  tt
MARK(x1)  =  MARK
U12(x1)  =  U12
isNatList(x1)  =  isNatList
cons(x1, x2)  =  cons
zeros  =  zeros
0  =  0
mark(x1)  =  mark
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  and
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind
U81(x1)  =  U81
active(x1)  =  active
nil  =  nil

Lexicographic path order with status [LPO].
Quasi-Precedence:
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > U12 > [tt, s]
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > 0 > [tt, s]
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > U32 > [tt, s]
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > U53 > [tt, s]
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > U63 > [tt, s]
[U11, MARK, isNatList, cons, zeros, mark, U21, U22, isNat, U31, U41, U42, U43, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, active] > U81 > nil > [tt, s]

Status:
U22: []
U31: []
U42: []
U11: []
isNatIList: []
length: []
isNat: []
U61: []
tt: []
cons: []
zeros: []
U41: []
and: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
active: []
MARK: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
mark: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(161) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(162) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


MARK(U22(X)) → ACTIVE(U22(mark(X)))
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  x1
U11(x1, x2)  =  U11
tt  =  tt
MARK(x1)  =  MARK
U12(x1)  =  U12
isNatList(x1)  =  isNatList
cons(x1, x2)  =  cons
zeros  =  zeros
0  =  0
mark(x1)  =  mark
U21(x1, x2)  =  U21
U22(x1)  =  U22
isNat(x1)  =  isNat
U31(x1, x2)  =  U31
U32(x1)  =  U32
U41(x1, x2, x3)  =  U41
U42(x1, x2)  =  U42
U43(x1)  =  U43
isNatIList(x1)  =  isNatIList
U51(x1, x2, x3)  =  U51
U52(x1, x2)  =  U52
U53(x1)  =  U53
U61(x1, x2, x3)  =  U61
U62(x1, x2)  =  U62
U63(x1)  =  U63
U71(x1, x2)  =  U71
s(x1)  =  s
length(x1)  =  length
U91(x1, x2, x3, x4)  =  U91
take(x1, x2)  =  take
and(x1, x2)  =  and
isNatIListKind(x1)  =  isNatIListKind
isNatKind(x1)  =  isNatKind
U81(x1)  =  U81
active(x1)  =  active
nil  =  nil

Lexicographic path order with status [LPO].
Quasi-Precedence:
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U12 > tt
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > cons
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U22 > tt
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U43 > tt
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > s
0 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > nil > tt
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U12 > tt
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > cons
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U22 > tt
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U43 > tt
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > s
U53 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > nil > tt
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U12 > tt
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > cons
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U22 > tt
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > U43 > tt
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > s
U63 > [U11, MARK, isNatList, zeros, mark, U21, isNat, U31, U32, U41, U42, isNatIList, U51, U52, U61, U62, U71, length, U91, take, and, isNatIListKind, isNatKind, U81, active] > nil > tt

Status:
U22: []
U31: []
U42: []
U11: []
isNatIList: []
length: []
isNat: []
U61: []
tt: []
cons: []
zeros: []
U41: []
and: []
isNatKind: []
U81: []
U43: []
U63: []
nil: []
active: []
MARK: []
U21: []
U51: []
U62: []
isNatList: []
U32: []
U91: []
U52: []
U53: []
U12: []
s: []
U71: []
0: []
take: []
mark: []
isNatIListKind: []


The following usable rules [FROCOS05] were oriented:

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

(163) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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

The TRS R consists of the following 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))
mark(zeros) → active(zeros)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(0) → active(0)
mark(U11(X1, X2)) → active(U11(mark(X1), X2))
mark(tt) → active(tt)
mark(U12(X)) → active(U12(mark(X)))
mark(isNatList(X)) → active(isNatList(X))
mark(U21(X1, X2)) → active(U21(mark(X1), X2))
mark(U22(X)) → active(U22(mark(X)))
mark(isNat(X)) → active(isNat(X))
mark(U31(X1, X2)) → active(U31(mark(X1), X2))
mark(U32(X)) → active(U32(mark(X)))
mark(U41(X1, X2, X3)) → active(U41(mark(X1), X2, X3))
mark(U42(X1, X2)) → active(U42(mark(X1), X2))
mark(U43(X)) → active(U43(mark(X)))
mark(isNatIList(X)) → active(isNatIList(X))
mark(U51(X1, X2, X3)) → active(U51(mark(X1), X2, X3))
mark(U52(X1, X2)) → active(U52(mark(X1), X2))
mark(U53(X)) → active(U53(mark(X)))
mark(U61(X1, X2, X3)) → active(U61(mark(X1), X2, X3))
mark(U62(X1, X2)) → active(U62(mark(X1), X2))
mark(U63(X)) → active(U63(mark(X)))
mark(U71(X1, X2)) → active(U71(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(mark(X)))
mark(U81(X)) → active(U81(mark(X)))
mark(nil) → active(nil)
mark(U91(X1, X2, X3, X4)) → active(U91(mark(X1), X2, X3, X4))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(isNatIListKind(X)) → active(isNatIListKind(X))
mark(isNatKind(X)) → active(isNatKind(X))
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
U11(mark(X1), X2) → U11(X1, X2)
U11(X1, mark(X2)) → U11(X1, X2)
U11(active(X1), X2) → U11(X1, X2)
U11(X1, active(X2)) → U11(X1, X2)
U12(mark(X)) → U12(X)
U12(active(X)) → U12(X)
isNatList(mark(X)) → isNatList(X)
isNatList(active(X)) → isNatList(X)
U21(mark(X1), X2) → U21(X1, X2)
U21(X1, mark(X2)) → U21(X1, X2)
U21(active(X1), X2) → U21(X1, X2)
U21(X1, active(X2)) → U21(X1, X2)
U22(mark(X)) → U22(X)
U22(active(X)) → U22(X)
isNat(mark(X)) → isNat(X)
isNat(active(X)) → isNat(X)
U31(mark(X1), X2) → U31(X1, X2)
U31(X1, mark(X2)) → U31(X1, X2)
U31(active(X1), X2) → U31(X1, X2)
U31(X1, active(X2)) → U31(X1, X2)
U32(mark(X)) → U32(X)
U32(active(X)) → U32(X)
U41(mark(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, mark(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, mark(X3)) → U41(X1, X2, X3)
U41(active(X1), X2, X3) → U41(X1, X2, X3)
U41(X1, active(X2), X3) → U41(X1, X2, X3)
U41(X1, X2, active(X3)) → U41(X1, X2, X3)
U42(mark(X1), X2) → U42(X1, X2)
U42(X1, mark(X2)) → U42(X1, X2)
U42(active(X1), X2) → U42(X1, X2)
U42(X1, active(X2)) → U42(X1, X2)
U43(mark(X)) → U43(X)
U43(active(X)) → U43(X)
isNatIList(mark(X)) → isNatIList(X)
isNatIList(active(X)) → isNatIList(X)
U51(mark(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, mark(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, mark(X3)) → U51(X1, X2, X3)
U51(active(X1), X2, X3) → U51(X1, X2, X3)
U51(X1, active(X2), X3) → U51(X1, X2, X3)
U51(X1, X2, active(X3)) → U51(X1, X2, X3)
U52(mark(X1), X2) → U52(X1, X2)
U52(X1, mark(X2)) → U52(X1, X2)
U52(active(X1), X2) → U52(X1, X2)
U52(X1, active(X2)) → U52(X1, X2)
U53(mark(X)) → U53(X)
U53(active(X)) → U53(X)
U61(mark(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, mark(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, mark(X3)) → U61(X1, X2, X3)
U61(active(X1), X2, X3) → U61(X1, X2, X3)
U61(X1, active(X2), X3) → U61(X1, X2, X3)
U61(X1, X2, active(X3)) → U61(X1, X2, X3)
U62(mark(X1), X2) → U62(X1, X2)
U62(X1, mark(X2)) → U62(X1, X2)
U62(active(X1), X2) → U62(X1, X2)
U62(X1, active(X2)) → U62(X1, X2)
U63(mark(X)) → U63(X)
U63(active(X)) → U63(X)
U71(mark(X1), X2) → U71(X1, X2)
U71(X1, mark(X2)) → U71(X1, X2)
U71(active(X1), X2) → U71(X1, X2)
U71(X1, active(X2)) → U71(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
U81(mark(X)) → U81(X)
U81(active(X)) → U81(X)
U91(mark(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, mark(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, mark(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, mark(X4)) → U91(X1, X2, X3, X4)
U91(active(X1), X2, X3, X4) → U91(X1, X2, X3, X4)
U91(X1, active(X2), X3, X4) → U91(X1, X2, X3, X4)
U91(X1, X2, active(X3), X4) → U91(X1, X2, X3, X4)
U91(X1, X2, X3, active(X4)) → U91(X1, X2, X3, X4)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
isNatIListKind(mark(X)) → isNatIListKind(X)
isNatIListKind(active(X)) → isNatIListKind(X)
isNatKind(mark(X)) → isNatKind(X)
isNatKind(active(X)) → isNatKind(X)

Q is empty.
We have to consider all minimal (P,Q,R)-chains.