(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

active(U101(tt, V1, V2)) → mark(U102(isNaturalKind(V1), V1, V2))
active(U102(tt, V1, V2)) → mark(U103(isLNatKind(V2), V1, V2))
active(U103(tt, V1, V2)) → mark(U104(isLNatKind(V2), V1, V2))
active(U104(tt, V1, V2)) → mark(U105(isNatural(V1), V2))
active(U105(tt, V2)) → mark(U106(isLNat(V2)))
active(U106(tt)) → mark(tt)
active(U11(tt, N, XS)) → mark(U12(isNaturalKind(N), N, XS))
active(U111(tt, V2)) → mark(U112(isLNatKind(V2)))
active(U112(tt)) → mark(tt)
active(U12(tt, N, XS)) → mark(U13(isLNat(XS), N, XS))
active(U121(tt, V2)) → mark(U122(isLNatKind(V2)))
active(U122(tt)) → mark(tt)
active(U13(tt, N, XS)) → mark(U14(isLNatKind(XS), N, XS))
active(U131(tt)) → mark(tt)
active(U14(tt, N, XS)) → mark(snd(splitAt(N, XS)))
active(U141(tt)) → mark(tt)
active(U151(tt)) → mark(tt)
active(U161(tt)) → mark(tt)
active(U171(tt, V2)) → mark(U172(isLNatKind(V2)))
active(U172(tt)) → mark(tt)
active(U181(tt, V1)) → mark(U182(isLNatKind(V1), V1))
active(U182(tt, V1)) → mark(U183(isLNat(V1)))
active(U183(tt)) → mark(tt)
active(U191(tt, V1)) → mark(U192(isNaturalKind(V1), V1))
active(U192(tt, V1)) → mark(U193(isNatural(V1)))
active(U193(tt)) → mark(tt)
active(U201(tt, V1, V2)) → mark(U202(isNaturalKind(V1), V1, V2))
active(U202(tt, V1, V2)) → mark(U203(isLNatKind(V2), V1, V2))
active(U203(tt, V1, V2)) → mark(U204(isLNatKind(V2), V1, V2))
active(U204(tt, V1, V2)) → mark(U205(isNatural(V1), V2))
active(U205(tt, V2)) → mark(U206(isLNat(V2)))
active(U206(tt)) → mark(tt)
active(U21(tt, X, Y)) → mark(U22(isLNatKind(X), X, Y))
active(U211(tt)) → mark(tt)
active(U22(tt, X, Y)) → mark(U23(isLNat(Y), X, Y))
active(U221(tt)) → mark(tt)
active(U23(tt, X, Y)) → mark(U24(isLNatKind(Y), X))
active(U231(tt, V2)) → mark(U232(isLNatKind(V2)))
active(U232(tt)) → mark(tt)
active(U24(tt, X)) → mark(X)
active(U241(tt, V1, V2)) → mark(U242(isLNatKind(V1), V1, V2))
active(U242(tt, V1, V2)) → mark(U243(isLNatKind(V2), V1, V2))
active(U243(tt, V1, V2)) → mark(U244(isLNatKind(V2), V1, V2))
active(U244(tt, V1, V2)) → mark(U245(isLNat(V1), V2))
active(U245(tt, V2)) → mark(U246(isLNat(V2)))
active(U246(tt)) → mark(tt)
active(U251(tt, V1, V2)) → mark(U252(isNaturalKind(V1), V1, V2))
active(U252(tt, V1, V2)) → mark(U253(isLNatKind(V2), V1, V2))
active(U253(tt, V1, V2)) → mark(U254(isLNatKind(V2), V1, V2))
active(U254(tt, V1, V2)) → mark(U255(isNatural(V1), V2))
active(U255(tt, V2)) → mark(U256(isLNat(V2)))
active(U256(tt)) → mark(tt)
active(U261(tt, V2)) → mark(U262(isLNatKind(V2)))
active(U262(tt)) → mark(tt)
active(U271(tt, V2)) → mark(U272(isLNatKind(V2)))
active(U272(tt)) → mark(tt)
active(U281(tt, N)) → mark(U282(isNaturalKind(N), N))
active(U282(tt, N)) → mark(cons(N, natsFrom(s(N))))
active(U291(tt, N, XS)) → mark(U292(isNaturalKind(N), N, XS))
active(U292(tt, N, XS)) → mark(U293(isLNat(XS), N, XS))
active(U293(tt, N, XS)) → mark(U294(isLNatKind(XS), N, XS))
active(U294(tt, N, XS)) → mark(head(afterNth(N, XS)))
active(U301(tt, X, Y)) → mark(U302(isLNatKind(X), Y))
active(U302(tt, Y)) → mark(U303(isLNat(Y), Y))
active(U303(tt, Y)) → mark(U304(isLNatKind(Y), Y))
active(U304(tt, Y)) → mark(Y)
active(U31(tt, N, XS)) → mark(U32(isNaturalKind(N), N, XS))
active(U311(tt, XS)) → mark(U312(isLNatKind(XS), XS))
active(U312(tt, XS)) → mark(pair(nil, XS))
active(U32(tt, N, XS)) → mark(U33(isLNat(XS), N, XS))
active(U321(tt, N, X, XS)) → mark(U322(isNaturalKind(N), N, X, XS))
active(U322(tt, N, X, XS)) → mark(U323(isNatural(X), N, X, XS))
active(U323(tt, N, X, XS)) → mark(U324(isNaturalKind(X), N, X, XS))
active(U324(tt, N, X, XS)) → mark(U325(isLNat(XS), N, X, XS))
active(U325(tt, N, X, XS)) → mark(U326(isLNatKind(XS), N, X, XS))
active(U326(tt, N, X, XS)) → mark(U327(splitAt(N, XS), X))
active(U327(pair(YS, ZS), X)) → mark(pair(cons(X, YS), ZS))
active(U33(tt, N, XS)) → mark(U34(isLNatKind(XS), N))
active(U331(tt, N, XS)) → mark(U332(isNaturalKind(N), XS))
active(U332(tt, XS)) → mark(U333(isLNat(XS), XS))
active(U333(tt, XS)) → mark(U334(isLNatKind(XS), XS))
active(U334(tt, XS)) → mark(XS)
active(U34(tt, N)) → mark(N)
active(U341(tt, N, XS)) → mark(U342(isNaturalKind(N), N, XS))
active(U342(tt, N, XS)) → mark(U343(isLNat(XS), N, XS))
active(U343(tt, N, XS)) → mark(U344(isLNatKind(XS), N, XS))
active(U344(tt, N, XS)) → mark(fst(splitAt(N, XS)))
active(U41(tt, V1, V2)) → mark(U42(isNaturalKind(V1), V1, V2))
active(U42(tt, V1, V2)) → mark(U43(isLNatKind(V2), V1, V2))
active(U43(tt, V1, V2)) → mark(U44(isLNatKind(V2), V1, V2))
active(U44(tt, V1, V2)) → mark(U45(isNatural(V1), V2))
active(U45(tt, V2)) → mark(U46(isLNat(V2)))
active(U46(tt)) → mark(tt)
active(U51(tt, V1, V2)) → mark(U52(isNaturalKind(V1), V1, V2))
active(U52(tt, V1, V2)) → mark(U53(isLNatKind(V2), V1, V2))
active(U53(tt, V1, V2)) → mark(U54(isLNatKind(V2), V1, V2))
active(U54(tt, V1, V2)) → mark(U55(isNatural(V1), V2))
active(U55(tt, V2)) → mark(U56(isLNat(V2)))
active(U56(tt)) → mark(tt)
active(U61(tt, V1)) → mark(U62(isPLNatKind(V1), V1))
active(U62(tt, V1)) → mark(U63(isPLNat(V1)))
active(U63(tt)) → mark(tt)
active(U71(tt, V1)) → mark(U72(isNaturalKind(V1), V1))
active(U72(tt, V1)) → mark(U73(isNatural(V1)))
active(U73(tt)) → mark(tt)
active(U81(tt, V1)) → mark(U82(isPLNatKind(V1), V1))
active(U82(tt, V1)) → mark(U83(isPLNat(V1)))
active(U83(tt)) → mark(tt)
active(U91(tt, V1)) → mark(U92(isLNatKind(V1), V1))
active(U92(tt, V1)) → mark(U93(isLNat(V1)))
active(U93(tt)) → mark(tt)
active(afterNth(N, XS)) → mark(U11(isNatural(N), N, XS))
active(fst(pair(X, Y))) → mark(U21(isLNat(X), X, Y))
active(head(cons(N, XS))) → mark(U31(isNatural(N), N, XS))
active(isLNat(nil)) → mark(tt)
active(isLNat(afterNth(V1, V2))) → mark(U41(isNaturalKind(V1), V1, V2))
active(isLNat(cons(V1, V2))) → mark(U51(isNaturalKind(V1), V1, V2))
active(isLNat(fst(V1))) → mark(U61(isPLNatKind(V1), V1))
active(isLNat(natsFrom(V1))) → mark(U71(isNaturalKind(V1), V1))
active(isLNat(snd(V1))) → mark(U81(isPLNatKind(V1), V1))
active(isLNat(tail(V1))) → mark(U91(isLNatKind(V1), V1))
active(isLNat(take(V1, V2))) → mark(U101(isNaturalKind(V1), V1, V2))
active(isLNatKind(nil)) → mark(tt)
active(isLNatKind(afterNth(V1, V2))) → mark(U111(isNaturalKind(V1), V2))
active(isLNatKind(cons(V1, V2))) → mark(U121(isNaturalKind(V1), V2))
active(isLNatKind(fst(V1))) → mark(U131(isPLNatKind(V1)))
active(isLNatKind(natsFrom(V1))) → mark(U141(isNaturalKind(V1)))
active(isLNatKind(snd(V1))) → mark(U151(isPLNatKind(V1)))
active(isLNatKind(tail(V1))) → mark(U161(isLNatKind(V1)))
active(isLNatKind(take(V1, V2))) → mark(U171(isNaturalKind(V1), V2))
active(isNatural(0)) → mark(tt)
active(isNatural(head(V1))) → mark(U181(isLNatKind(V1), V1))
active(isNatural(s(V1))) → mark(U191(isNaturalKind(V1), V1))
active(isNatural(sel(V1, V2))) → mark(U201(isNaturalKind(V1), V1, V2))
active(isNaturalKind(0)) → mark(tt)
active(isNaturalKind(head(V1))) → mark(U211(isLNatKind(V1)))
active(isNaturalKind(s(V1))) → mark(U221(isNaturalKind(V1)))
active(isNaturalKind(sel(V1, V2))) → mark(U231(isNaturalKind(V1), V2))
active(isPLNat(pair(V1, V2))) → mark(U241(isLNatKind(V1), V1, V2))
active(isPLNat(splitAt(V1, V2))) → mark(U251(isNaturalKind(V1), V1, V2))
active(isPLNatKind(pair(V1, V2))) → mark(U261(isLNatKind(V1), V2))
active(isPLNatKind(splitAt(V1, V2))) → mark(U271(isNaturalKind(V1), V2))
active(natsFrom(N)) → mark(U281(isNatural(N), N))
active(sel(N, XS)) → mark(U291(isNatural(N), N, XS))
active(snd(pair(X, Y))) → mark(U301(isLNat(X), X, Y))
active(splitAt(0, XS)) → mark(U311(isLNat(XS), XS))
active(splitAt(s(N), cons(X, XS))) → mark(U321(isNatural(N), N, X, XS))
active(tail(cons(N, XS))) → mark(U331(isNatural(N), N, XS))
active(take(N, XS)) → mark(U341(isNatural(N), N, XS))
active(U101(X1, X2, X3)) → U101(active(X1), X2, X3)
active(U102(X1, X2, X3)) → U102(active(X1), X2, X3)
active(U103(X1, X2, X3)) → U103(active(X1), X2, X3)
active(U104(X1, X2, X3)) → U104(active(X1), X2, X3)
active(U105(X1, X2)) → U105(active(X1), X2)
active(U106(X)) → U106(active(X))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)
active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(U111(X1, X2)) → U111(active(X1), X2)
active(U112(X)) → U112(active(X))
active(U13(X1, X2, X3)) → U13(active(X1), X2, X3)
active(U121(X1, X2)) → U121(active(X1), X2)
active(U122(X)) → U122(active(X))
active(U14(X1, X2, X3)) → U14(active(X1), X2, X3)
active(U131(X)) → U131(active(X))
active(snd(X)) → snd(active(X))
active(splitAt(X1, X2)) → splitAt(active(X1), X2)
active(splitAt(X1, X2)) → splitAt(X1, active(X2))
active(U141(X)) → U141(active(X))
active(U151(X)) → U151(active(X))
active(U161(X)) → U161(active(X))
active(U171(X1, X2)) → U171(active(X1), X2)
active(U172(X)) → U172(active(X))
active(U181(X1, X2)) → U181(active(X1), X2)
active(U182(X1, X2)) → U182(active(X1), X2)
active(U183(X)) → U183(active(X))
active(U191(X1, X2)) → U191(active(X1), X2)
active(U192(X1, X2)) → U192(active(X1), X2)
active(U193(X)) → U193(active(X))
active(U201(X1, X2, X3)) → U201(active(X1), X2, X3)
active(U202(X1, X2, X3)) → U202(active(X1), X2, X3)
active(U203(X1, X2, X3)) → U203(active(X1), X2, X3)
active(U204(X1, X2, X3)) → U204(active(X1), X2, X3)
active(U205(X1, X2)) → U205(active(X1), X2)
active(U206(X)) → U206(active(X))
active(U21(X1, X2, X3)) → U21(active(X1), X2, X3)
active(U22(X1, X2, X3)) → U22(active(X1), X2, X3)
active(U211(X)) → U211(active(X))
active(U23(X1, X2, X3)) → U23(active(X1), X2, X3)
active(U221(X)) → U221(active(X))
active(U24(X1, X2)) → U24(active(X1), X2)
active(U231(X1, X2)) → U231(active(X1), X2)
active(U232(X)) → U232(active(X))
active(U241(X1, X2, X3)) → U241(active(X1), X2, X3)
active(U242(X1, X2, X3)) → U242(active(X1), X2, X3)
active(U243(X1, X2, X3)) → U243(active(X1), X2, X3)
active(U244(X1, X2, X3)) → U244(active(X1), X2, X3)
active(U245(X1, X2)) → U245(active(X1), X2)
active(U246(X)) → U246(active(X))
active(U251(X1, X2, X3)) → U251(active(X1), X2, X3)
active(U252(X1, X2, X3)) → U252(active(X1), X2, X3)
active(U253(X1, X2, X3)) → U253(active(X1), X2, X3)
active(U254(X1, X2, X3)) → U254(active(X1), X2, X3)
active(U255(X1, X2)) → U255(active(X1), X2)
active(U256(X)) → U256(active(X))
active(U261(X1, X2)) → U261(active(X1), X2)
active(U262(X)) → U262(active(X))
active(U271(X1, X2)) → U271(active(X1), X2)
active(U272(X)) → U272(active(X))
active(U281(X1, X2)) → U281(active(X1), X2)
active(U282(X1, X2)) → U282(active(X1), X2)
active(cons(X1, X2)) → cons(active(X1), X2)
active(natsFrom(X)) → natsFrom(active(X))
active(s(X)) → s(active(X))
active(U291(X1, X2, X3)) → U291(active(X1), X2, X3)
active(U292(X1, X2, X3)) → U292(active(X1), X2, X3)
active(U293(X1, X2, X3)) → U293(active(X1), X2, X3)
active(U294(X1, X2, X3)) → U294(active(X1), X2, X3)
active(head(X)) → head(active(X))
active(afterNth(X1, X2)) → afterNth(active(X1), X2)
active(afterNth(X1, X2)) → afterNth(X1, active(X2))
active(U301(X1, X2, X3)) → U301(active(X1), X2, X3)
active(U302(X1, X2)) → U302(active(X1), X2)
active(U303(X1, X2)) → U303(active(X1), X2)
active(U304(X1, X2)) → U304(active(X1), X2)
active(U31(X1, X2, X3)) → U31(active(X1), X2, X3)
active(U32(X1, X2, X3)) → U32(active(X1), X2, X3)
active(U311(X1, X2)) → U311(active(X1), X2)
active(U312(X1, X2)) → U312(active(X1), X2)
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(U33(X1, X2, X3)) → U33(active(X1), X2, X3)
active(U321(X1, X2, X3, X4)) → U321(active(X1), X2, X3, X4)
active(U322(X1, X2, X3, X4)) → U322(active(X1), X2, X3, X4)
active(U323(X1, X2, X3, X4)) → U323(active(X1), X2, X3, X4)
active(U324(X1, X2, X3, X4)) → U324(active(X1), X2, X3, X4)
active(U325(X1, X2, X3, X4)) → U325(active(X1), X2, X3, X4)
active(U326(X1, X2, X3, X4)) → U326(active(X1), X2, X3, X4)
active(U327(X1, X2)) → U327(active(X1), X2)
active(U34(X1, X2)) → U34(active(X1), X2)
active(U331(X1, X2, X3)) → U331(active(X1), X2, X3)
active(U332(X1, X2)) → U332(active(X1), X2)
active(U333(X1, X2)) → U333(active(X1), X2)
active(U334(X1, X2)) → U334(active(X1), X2)
active(U341(X1, X2, X3)) → U341(active(X1), X2, X3)
active(U342(X1, X2, X3)) → U342(active(X1), X2, X3)
active(U343(X1, X2, X3)) → U343(active(X1), X2, X3)
active(U344(X1, X2, X3)) → U344(active(X1), X2, X3)
active(fst(X)) → fst(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(U42(X1, X2, X3)) → U42(active(X1), X2, X3)
active(U43(X1, X2, X3)) → U43(active(X1), X2, X3)
active(U44(X1, X2, X3)) → U44(active(X1), X2, X3)
active(U45(X1, X2)) → U45(active(X1), X2)
active(U46(X)) → U46(active(X))
active(U51(X1, X2, X3)) → U51(active(X1), X2, X3)
active(U52(X1, X2, X3)) → U52(active(X1), X2, X3)
active(U53(X1, X2, X3)) → U53(active(X1), X2, X3)
active(U54(X1, X2, X3)) → U54(active(X1), X2, X3)
active(U55(X1, X2)) → U55(active(X1), X2)
active(U56(X)) → U56(active(X))
active(U61(X1, X2)) → U61(active(X1), X2)
active(U62(X1, X2)) → U62(active(X1), X2)
active(U63(X)) → U63(active(X))
active(U71(X1, X2)) → U71(active(X1), X2)
active(U72(X1, X2)) → U72(active(X1), X2)
active(U73(X)) → U73(active(X))
active(U81(X1, X2)) → U81(active(X1), X2)
active(U82(X1, X2)) → U82(active(X1), X2)
active(U83(X)) → U83(active(X))
active(U91(X1, X2)) → U91(active(X1), X2)
active(U92(X1, X2)) → U92(active(X1), X2)
active(U93(X)) → U93(active(X))
active(tail(X)) → tail(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(sel(X1, X2)) → sel(active(X1), X2)
active(sel(X1, X2)) → sel(X1, active(X2))
U101(mark(X1), X2, X3) → mark(U101(X1, X2, X3))
U102(mark(X1), X2, X3) → mark(U102(X1, X2, X3))
U103(mark(X1), X2, X3) → mark(U103(X1, X2, X3))
U104(mark(X1), X2, X3) → mark(U104(X1, X2, X3))
U105(mark(X1), X2) → mark(U105(X1, X2))
U106(mark(X)) → mark(U106(X))
U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))
U111(mark(X1), X2) → mark(U111(X1, X2))
U112(mark(X)) → mark(U112(X))
U13(mark(X1), X2, X3) → mark(U13(X1, X2, X3))
U121(mark(X1), X2) → mark(U121(X1, X2))
U122(mark(X)) → mark(U122(X))
U14(mark(X1), X2, X3) → mark(U14(X1, X2, X3))
U131(mark(X)) → mark(U131(X))
snd(mark(X)) → mark(snd(X))
splitAt(mark(X1), X2) → mark(splitAt(X1, X2))
splitAt(X1, mark(X2)) → mark(splitAt(X1, X2))
U141(mark(X)) → mark(U141(X))
U151(mark(X)) → mark(U151(X))
U161(mark(X)) → mark(U161(X))
U171(mark(X1), X2) → mark(U171(X1, X2))
U172(mark(X)) → mark(U172(X))
U181(mark(X1), X2) → mark(U181(X1, X2))
U182(mark(X1), X2) → mark(U182(X1, X2))
U183(mark(X)) → mark(U183(X))
U191(mark(X1), X2) → mark(U191(X1, X2))
U192(mark(X1), X2) → mark(U192(X1, X2))
U193(mark(X)) → mark(U193(X))
U201(mark(X1), X2, X3) → mark(U201(X1, X2, X3))
U202(mark(X1), X2, X3) → mark(U202(X1, X2, X3))
U203(mark(X1), X2, X3) → mark(U203(X1, X2, X3))
U204(mark(X1), X2, X3) → mark(U204(X1, X2, X3))
U205(mark(X1), X2) → mark(U205(X1, X2))
U206(mark(X)) → mark(U206(X))
U21(mark(X1), X2, X3) → mark(U21(X1, X2, X3))
U22(mark(X1), X2, X3) → mark(U22(X1, X2, X3))
U211(mark(X)) → mark(U211(X))
U23(mark(X1), X2, X3) → mark(U23(X1, X2, X3))
U221(mark(X)) → mark(U221(X))
U24(mark(X1), X2) → mark(U24(X1, X2))
U231(mark(X1), X2) → mark(U231(X1, X2))
U232(mark(X)) → mark(U232(X))
U241(mark(X1), X2, X3) → mark(U241(X1, X2, X3))
U242(mark(X1), X2, X3) → mark(U242(X1, X2, X3))
U243(mark(X1), X2, X3) → mark(U243(X1, X2, X3))
U244(mark(X1), X2, X3) → mark(U244(X1, X2, X3))
U245(mark(X1), X2) → mark(U245(X1, X2))
U246(mark(X)) → mark(U246(X))
U251(mark(X1), X2, X3) → mark(U251(X1, X2, X3))
U252(mark(X1), X2, X3) → mark(U252(X1, X2, X3))
U253(mark(X1), X2, X3) → mark(U253(X1, X2, X3))
U254(mark(X1), X2, X3) → mark(U254(X1, X2, X3))
U255(mark(X1), X2) → mark(U255(X1, X2))
U256(mark(X)) → mark(U256(X))
U261(mark(X1), X2) → mark(U261(X1, X2))
U262(mark(X)) → mark(U262(X))
U271(mark(X1), X2) → mark(U271(X1, X2))
U272(mark(X)) → mark(U272(X))
U281(mark(X1), X2) → mark(U281(X1, X2))
U282(mark(X1), X2) → mark(U282(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
natsFrom(mark(X)) → mark(natsFrom(X))
s(mark(X)) → mark(s(X))
U291(mark(X1), X2, X3) → mark(U291(X1, X2, X3))
U292(mark(X1), X2, X3) → mark(U292(X1, X2, X3))
U293(mark(X1), X2, X3) → mark(U293(X1, X2, X3))
U294(mark(X1), X2, X3) → mark(U294(X1, X2, X3))
head(mark(X)) → mark(head(X))
afterNth(mark(X1), X2) → mark(afterNth(X1, X2))
afterNth(X1, mark(X2)) → mark(afterNth(X1, X2))
U301(mark(X1), X2, X3) → mark(U301(X1, X2, X3))
U302(mark(X1), X2) → mark(U302(X1, X2))
U303(mark(X1), X2) → mark(U303(X1, X2))
U304(mark(X1), X2) → mark(U304(X1, X2))
U31(mark(X1), X2, X3) → mark(U31(X1, X2, X3))
U32(mark(X1), X2, X3) → mark(U32(X1, X2, X3))
U311(mark(X1), X2) → mark(U311(X1, X2))
U312(mark(X1), X2) → mark(U312(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
U33(mark(X1), X2, X3) → mark(U33(X1, X2, X3))
U321(mark(X1), X2, X3, X4) → mark(U321(X1, X2, X3, X4))
U322(mark(X1), X2, X3, X4) → mark(U322(X1, X2, X3, X4))
U323(mark(X1), X2, X3, X4) → mark(U323(X1, X2, X3, X4))
U324(mark(X1), X2, X3, X4) → mark(U324(X1, X2, X3, X4))
U325(mark(X1), X2, X3, X4) → mark(U325(X1, X2, X3, X4))
U326(mark(X1), X2, X3, X4) → mark(U326(X1, X2, X3, X4))
U327(mark(X1), X2) → mark(U327(X1, X2))
U34(mark(X1), X2) → mark(U34(X1, X2))
U331(mark(X1), X2, X3) → mark(U331(X1, X2, X3))
U332(mark(X1), X2) → mark(U332(X1, X2))
U333(mark(X1), X2) → mark(U333(X1, X2))
U334(mark(X1), X2) → mark(U334(X1, X2))
U341(mark(X1), X2, X3) → mark(U341(X1, X2, X3))
U342(mark(X1), X2, X3) → mark(U342(X1, X2, X3))
U343(mark(X1), X2, X3) → mark(U343(X1, X2, X3))
U344(mark(X1), X2, X3) → mark(U344(X1, X2, X3))
fst(mark(X)) → mark(fst(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
U42(mark(X1), X2, X3) → mark(U42(X1, X2, X3))
U43(mark(X1), X2, X3) → mark(U43(X1, X2, X3))
U44(mark(X1), X2, X3) → mark(U44(X1, X2, X3))
U45(mark(X1), X2) → mark(U45(X1, X2))
U46(mark(X)) → mark(U46(X))
U51(mark(X1), X2, X3) → mark(U51(X1, X2, X3))
U52(mark(X1), X2, X3) → mark(U52(X1, X2, X3))
U53(mark(X1), X2, X3) → mark(U53(X1, X2, X3))
U54(mark(X1), X2, X3) → mark(U54(X1, X2, X3))
U55(mark(X1), X2) → mark(U55(X1, X2))
U56(mark(X)) → mark(U56(X))
U61(mark(X1), X2) → mark(U61(X1, X2))
U62(mark(X1), X2) → mark(U62(X1, X2))
U63(mark(X)) → mark(U63(X))
U71(mark(X1), X2) → mark(U71(X1, X2))
U72(mark(X1), X2) → mark(U72(X1, X2))
U73(mark(X)) → mark(U73(X))
U81(mark(X1), X2) → mark(U81(X1, X2))
U82(mark(X1), X2) → mark(U82(X1, X2))
U83(mark(X)) → mark(U83(X))
U91(mark(X1), X2) → mark(U91(X1, X2))
U92(mark(X1), X2) → mark(U92(X1, X2))
U93(mark(X)) → mark(U93(X))
tail(mark(X)) → mark(tail(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
sel(mark(X1), X2) → mark(sel(X1, X2))
sel(X1, mark(X2)) → mark(sel(X1, X2))
proper(U101(X1, X2, X3)) → U101(proper(X1), proper(X2), proper(X3))
proper(tt) → ok(tt)
proper(U102(X1, X2, X3)) → U102(proper(X1), proper(X2), proper(X3))
proper(isNaturalKind(X)) → isNaturalKind(proper(X))
proper(U103(X1, X2, X3)) → U103(proper(X1), proper(X2), proper(X3))
proper(isLNatKind(X)) → isLNatKind(proper(X))
proper(U104(X1, X2, X3)) → U104(proper(X1), proper(X2), proper(X3))
proper(U105(X1, X2)) → U105(proper(X1), proper(X2))
proper(isNatural(X)) → isNatural(proper(X))
proper(U106(X)) → U106(proper(X))
proper(isLNat(X)) → isLNat(proper(X))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))
proper(U111(X1, X2)) → U111(proper(X1), proper(X2))
proper(U112(X)) → U112(proper(X))
proper(U13(X1, X2, X3)) → U13(proper(X1), proper(X2), proper(X3))
proper(U121(X1, X2)) → U121(proper(X1), proper(X2))
proper(U122(X)) → U122(proper(X))
proper(U14(X1, X2, X3)) → U14(proper(X1), proper(X2), proper(X3))
proper(U131(X)) → U131(proper(X))
proper(snd(X)) → snd(proper(X))
proper(splitAt(X1, X2)) → splitAt(proper(X1), proper(X2))
proper(U141(X)) → U141(proper(X))
proper(U151(X)) → U151(proper(X))
proper(U161(X)) → U161(proper(X))
proper(U171(X1, X2)) → U171(proper(X1), proper(X2))
proper(U172(X)) → U172(proper(X))
proper(U181(X1, X2)) → U181(proper(X1), proper(X2))
proper(U182(X1, X2)) → U182(proper(X1), proper(X2))
proper(U183(X)) → U183(proper(X))
proper(U191(X1, X2)) → U191(proper(X1), proper(X2))
proper(U192(X1, X2)) → U192(proper(X1), proper(X2))
proper(U193(X)) → U193(proper(X))
proper(U201(X1, X2, X3)) → U201(proper(X1), proper(X2), proper(X3))
proper(U202(X1, X2, X3)) → U202(proper(X1), proper(X2), proper(X3))
proper(U203(X1, X2, X3)) → U203(proper(X1), proper(X2), proper(X3))
proper(U204(X1, X2, X3)) → U204(proper(X1), proper(X2), proper(X3))
proper(U205(X1, X2)) → U205(proper(X1), proper(X2))
proper(U206(X)) → U206(proper(X))
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(U22(X1, X2, X3)) → U22(proper(X1), proper(X2), proper(X3))
proper(U211(X)) → U211(proper(X))
proper(U23(X1, X2, X3)) → U23(proper(X1), proper(X2), proper(X3))
proper(U221(X)) → U221(proper(X))
proper(U24(X1, X2)) → U24(proper(X1), proper(X2))
proper(U231(X1, X2)) → U231(proper(X1), proper(X2))
proper(U232(X)) → U232(proper(X))
proper(U241(X1, X2, X3)) → U241(proper(X1), proper(X2), proper(X3))
proper(U242(X1, X2, X3)) → U242(proper(X1), proper(X2), proper(X3))
proper(U243(X1, X2, X3)) → U243(proper(X1), proper(X2), proper(X3))
proper(U244(X1, X2, X3)) → U244(proper(X1), proper(X2), proper(X3))
proper(U245(X1, X2)) → U245(proper(X1), proper(X2))
proper(U246(X)) → U246(proper(X))
proper(U251(X1, X2, X3)) → U251(proper(X1), proper(X2), proper(X3))
proper(U252(X1, X2, X3)) → U252(proper(X1), proper(X2), proper(X3))
proper(U253(X1, X2, X3)) → U253(proper(X1), proper(X2), proper(X3))
proper(U254(X1, X2, X3)) → U254(proper(X1), proper(X2), proper(X3))
proper(U255(X1, X2)) → U255(proper(X1), proper(X2))
proper(U256(X)) → U256(proper(X))
proper(U261(X1, X2)) → U261(proper(X1), proper(X2))
proper(U262(X)) → U262(proper(X))
proper(U271(X1, X2)) → U271(proper(X1), proper(X2))
proper(U272(X)) → U272(proper(X))
proper(U281(X1, X2)) → U281(proper(X1), proper(X2))
proper(U282(X1, X2)) → U282(proper(X1), proper(X2))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(natsFrom(X)) → natsFrom(proper(X))
proper(s(X)) → s(proper(X))
proper(U291(X1, X2, X3)) → U291(proper(X1), proper(X2), proper(X3))
proper(U292(X1, X2, X3)) → U292(proper(X1), proper(X2), proper(X3))
proper(U293(X1, X2, X3)) → U293(proper(X1), proper(X2), proper(X3))
proper(U294(X1, X2, X3)) → U294(proper(X1), proper(X2), proper(X3))
proper(head(X)) → head(proper(X))
proper(afterNth(X1, X2)) → afterNth(proper(X1), proper(X2))
proper(U301(X1, X2, X3)) → U301(proper(X1), proper(X2), proper(X3))
proper(U302(X1, X2)) → U302(proper(X1), proper(X2))
proper(U303(X1, X2)) → U303(proper(X1), proper(X2))
proper(U304(X1, X2)) → U304(proper(X1), proper(X2))
proper(U31(X1, X2, X3)) → U31(proper(X1), proper(X2), proper(X3))
proper(U32(X1, X2, X3)) → U32(proper(X1), proper(X2), proper(X3))
proper(U311(X1, X2)) → U311(proper(X1), proper(X2))
proper(U312(X1, X2)) → U312(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(U33(X1, X2, X3)) → U33(proper(X1), proper(X2), proper(X3))
proper(U321(X1, X2, X3, X4)) → U321(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U322(X1, X2, X3, X4)) → U322(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U323(X1, X2, X3, X4)) → U323(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U324(X1, X2, X3, X4)) → U324(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U325(X1, X2, X3, X4)) → U325(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U326(X1, X2, X3, X4)) → U326(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U327(X1, X2)) → U327(proper(X1), proper(X2))
proper(U34(X1, X2)) → U34(proper(X1), proper(X2))
proper(U331(X1, X2, X3)) → U331(proper(X1), proper(X2), proper(X3))
proper(U332(X1, X2)) → U332(proper(X1), proper(X2))
proper(U333(X1, X2)) → U333(proper(X1), proper(X2))
proper(U334(X1, X2)) → U334(proper(X1), proper(X2))
proper(U341(X1, X2, X3)) → U341(proper(X1), proper(X2), proper(X3))
proper(U342(X1, X2, X3)) → U342(proper(X1), proper(X2), proper(X3))
proper(U343(X1, X2, X3)) → U343(proper(X1), proper(X2), proper(X3))
proper(U344(X1, X2, X3)) → U344(proper(X1), proper(X2), proper(X3))
proper(fst(X)) → fst(proper(X))
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(U42(X1, X2, X3)) → U42(proper(X1), proper(X2), proper(X3))
proper(U43(X1, X2, X3)) → U43(proper(X1), proper(X2), proper(X3))
proper(U44(X1, X2, X3)) → U44(proper(X1), proper(X2), proper(X3))
proper(U45(X1, X2)) → U45(proper(X1), proper(X2))
proper(U46(X)) → U46(proper(X))
proper(U51(X1, X2, X3)) → U51(proper(X1), proper(X2), proper(X3))
proper(U52(X1, X2, X3)) → U52(proper(X1), proper(X2), proper(X3))
proper(U53(X1, X2, X3)) → U53(proper(X1), proper(X2), proper(X3))
proper(U54(X1, X2, X3)) → U54(proper(X1), proper(X2), proper(X3))
proper(U55(X1, X2)) → U55(proper(X1), proper(X2))
proper(U56(X)) → U56(proper(X))
proper(U61(X1, X2)) → U61(proper(X1), proper(X2))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isPLNatKind(X)) → isPLNatKind(proper(X))
proper(U63(X)) → U63(proper(X))
proper(isPLNat(X)) → isPLNat(proper(X))
proper(U71(X1, X2)) → U71(proper(X1), proper(X2))
proper(U72(X1, X2)) → U72(proper(X1), proper(X2))
proper(U73(X)) → U73(proper(X))
proper(U81(X1, X2)) → U81(proper(X1), proper(X2))
proper(U82(X1, X2)) → U82(proper(X1), proper(X2))
proper(U83(X)) → U83(proper(X))
proper(U91(X1, X2)) → U91(proper(X1), proper(X2))
proper(U92(X1, X2)) → U92(proper(X1), proper(X2))
proper(U93(X)) → U93(proper(X))
proper(tail(X)) → tail(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(0) → ok(0)
proper(sel(X1, X2)) → sel(proper(X1), proper(X2))
U101(ok(X1), ok(X2), ok(X3)) → ok(U101(X1, X2, X3))
U102(ok(X1), ok(X2), ok(X3)) → ok(U102(X1, X2, X3))
isNaturalKind(ok(X)) → ok(isNaturalKind(X))
U103(ok(X1), ok(X2), ok(X3)) → ok(U103(X1, X2, X3))
isLNatKind(ok(X)) → ok(isLNatKind(X))
U104(ok(X1), ok(X2), ok(X3)) → ok(U104(X1, X2, X3))
U105(ok(X1), ok(X2)) → ok(U105(X1, X2))
isNatural(ok(X)) → ok(isNatural(X))
U106(ok(X)) → ok(U106(X))
isLNat(ok(X)) → ok(isLNat(X))
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))
U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
U111(ok(X1), ok(X2)) → ok(U111(X1, X2))
U112(ok(X)) → ok(U112(X))
U13(ok(X1), ok(X2), ok(X3)) → ok(U13(X1, X2, X3))
U121(ok(X1), ok(X2)) → ok(U121(X1, X2))
U122(ok(X)) → ok(U122(X))
U14(ok(X1), ok(X2), ok(X3)) → ok(U14(X1, X2, X3))
U131(ok(X)) → ok(U131(X))
snd(ok(X)) → ok(snd(X))
splitAt(ok(X1), ok(X2)) → ok(splitAt(X1, X2))
U141(ok(X)) → ok(U141(X))
U151(ok(X)) → ok(U151(X))
U161(ok(X)) → ok(U161(X))
U171(ok(X1), ok(X2)) → ok(U171(X1, X2))
U172(ok(X)) → ok(U172(X))
U181(ok(X1), ok(X2)) → ok(U181(X1, X2))
U182(ok(X1), ok(X2)) → ok(U182(X1, X2))
U183(ok(X)) → ok(U183(X))
U191(ok(X1), ok(X2)) → ok(U191(X1, X2))
U192(ok(X1), ok(X2)) → ok(U192(X1, X2))
U193(ok(X)) → ok(U193(X))
U201(ok(X1), ok(X2), ok(X3)) → ok(U201(X1, X2, X3))
U202(ok(X1), ok(X2), ok(X3)) → ok(U202(X1, X2, X3))
U203(ok(X1), ok(X2), ok(X3)) → ok(U203(X1, X2, X3))
U204(ok(X1), ok(X2), ok(X3)) → ok(U204(X1, X2, X3))
U205(ok(X1), ok(X2)) → ok(U205(X1, X2))
U206(ok(X)) → ok(U206(X))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
U22(ok(X1), ok(X2), ok(X3)) → ok(U22(X1, X2, X3))
U211(ok(X)) → ok(U211(X))
U23(ok(X1), ok(X2), ok(X3)) → ok(U23(X1, X2, X3))
U221(ok(X)) → ok(U221(X))
U24(ok(X1), ok(X2)) → ok(U24(X1, X2))
U231(ok(X1), ok(X2)) → ok(U231(X1, X2))
U232(ok(X)) → ok(U232(X))
U241(ok(X1), ok(X2), ok(X3)) → ok(U241(X1, X2, X3))
U242(ok(X1), ok(X2), ok(X3)) → ok(U242(X1, X2, X3))
U243(ok(X1), ok(X2), ok(X3)) → ok(U243(X1, X2, X3))
U244(ok(X1), ok(X2), ok(X3)) → ok(U244(X1, X2, X3))
U245(ok(X1), ok(X2)) → ok(U245(X1, X2))
U246(ok(X)) → ok(U246(X))
U251(ok(X1), ok(X2), ok(X3)) → ok(U251(X1, X2, X3))
U252(ok(X1), ok(X2), ok(X3)) → ok(U252(X1, X2, X3))
U253(ok(X1), ok(X2), ok(X3)) → ok(U253(X1, X2, X3))
U254(ok(X1), ok(X2), ok(X3)) → ok(U254(X1, X2, X3))
U255(ok(X1), ok(X2)) → ok(U255(X1, X2))
U256(ok(X)) → ok(U256(X))
U261(ok(X1), ok(X2)) → ok(U261(X1, X2))
U262(ok(X)) → ok(U262(X))
U271(ok(X1), ok(X2)) → ok(U271(X1, X2))
U272(ok(X)) → ok(U272(X))
U281(ok(X1), ok(X2)) → ok(U281(X1, X2))
U282(ok(X1), ok(X2)) → ok(U282(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
natsFrom(ok(X)) → ok(natsFrom(X))
s(ok(X)) → ok(s(X))
U291(ok(X1), ok(X2), ok(X3)) → ok(U291(X1, X2, X3))
U292(ok(X1), ok(X2), ok(X3)) → ok(U292(X1, X2, X3))
U293(ok(X1), ok(X2), ok(X3)) → ok(U293(X1, X2, X3))
U294(ok(X1), ok(X2), ok(X3)) → ok(U294(X1, X2, X3))
head(ok(X)) → ok(head(X))
afterNth(ok(X1), ok(X2)) → ok(afterNth(X1, X2))
U301(ok(X1), ok(X2), ok(X3)) → ok(U301(X1, X2, X3))
U302(ok(X1), ok(X2)) → ok(U302(X1, X2))
U303(ok(X1), ok(X2)) → ok(U303(X1, X2))
U304(ok(X1), ok(X2)) → ok(U304(X1, X2))
U31(ok(X1), ok(X2), ok(X3)) → ok(U31(X1, X2, X3))
U32(ok(X1), ok(X2), ok(X3)) → ok(U32(X1, X2, X3))
U311(ok(X1), ok(X2)) → ok(U311(X1, X2))
U312(ok(X1), ok(X2)) → ok(U312(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
U33(ok(X1), ok(X2), ok(X3)) → ok(U33(X1, X2, X3))
U321(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U321(X1, X2, X3, X4))
U322(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U322(X1, X2, X3, X4))
U323(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U323(X1, X2, X3, X4))
U324(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U324(X1, X2, X3, X4))
U325(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U325(X1, X2, X3, X4))
U326(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U326(X1, X2, X3, X4))
U327(ok(X1), ok(X2)) → ok(U327(X1, X2))
U34(ok(X1), ok(X2)) → ok(U34(X1, X2))
U331(ok(X1), ok(X2), ok(X3)) → ok(U331(X1, X2, X3))
U332(ok(X1), ok(X2)) → ok(U332(X1, X2))
U333(ok(X1), ok(X2)) → ok(U333(X1, X2))
U334(ok(X1), ok(X2)) → ok(U334(X1, X2))
U341(ok(X1), ok(X2), ok(X3)) → ok(U341(X1, X2, X3))
U342(ok(X1), ok(X2), ok(X3)) → ok(U342(X1, X2, X3))
U343(ok(X1), ok(X2), ok(X3)) → ok(U343(X1, X2, X3))
U344(ok(X1), ok(X2), ok(X3)) → ok(U344(X1, X2, X3))
fst(ok(X)) → ok(fst(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
U42(ok(X1), ok(X2), ok(X3)) → ok(U42(X1, X2, X3))
U43(ok(X1), ok(X2), ok(X3)) → ok(U43(X1, X2, X3))
U44(ok(X1), ok(X2), ok(X3)) → ok(U44(X1, X2, X3))
U45(ok(X1), ok(X2)) → ok(U45(X1, X2))
U46(ok(X)) → ok(U46(X))
U51(ok(X1), ok(X2), ok(X3)) → ok(U51(X1, X2, X3))
U52(ok(X1), ok(X2), ok(X3)) → ok(U52(X1, X2, X3))
U53(ok(X1), ok(X2), ok(X3)) → ok(U53(X1, X2, X3))
U54(ok(X1), ok(X2), ok(X3)) → ok(U54(X1, X2, X3))
U55(ok(X1), ok(X2)) → ok(U55(X1, X2))
U56(ok(X)) → ok(U56(X))
U61(ok(X1), ok(X2)) → ok(U61(X1, X2))
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
isPLNatKind(ok(X)) → ok(isPLNatKind(X))
U63(ok(X)) → ok(U63(X))
isPLNat(ok(X)) → ok(isPLNat(X))
U71(ok(X1), ok(X2)) → ok(U71(X1, X2))
U72(ok(X1), ok(X2)) → ok(U72(X1, X2))
U73(ok(X)) → ok(U73(X))
U81(ok(X1), ok(X2)) → ok(U81(X1, X2))
U82(ok(X1), ok(X2)) → ok(U82(X1, X2))
U83(ok(X)) → ok(U83(X))
U91(ok(X1), ok(X2)) → ok(U91(X1, X2))
U92(ok(X1), ok(X2)) → ok(U92(X1, X2))
U93(ok(X)) → ok(U93(X))
tail(ok(X)) → ok(tail(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
sel(ok(X1), ok(X2)) → ok(sel(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.

(1) QTRSToCSRProof (EQUIVALENT transformation)

The following Q TRS is given: Q restricted rewrite system:
The TRS R consists of the following rules:

active(U101(tt, V1, V2)) → mark(U102(isNaturalKind(V1), V1, V2))
active(U102(tt, V1, V2)) → mark(U103(isLNatKind(V2), V1, V2))
active(U103(tt, V1, V2)) → mark(U104(isLNatKind(V2), V1, V2))
active(U104(tt, V1, V2)) → mark(U105(isNatural(V1), V2))
active(U105(tt, V2)) → mark(U106(isLNat(V2)))
active(U106(tt)) → mark(tt)
active(U11(tt, N, XS)) → mark(U12(isNaturalKind(N), N, XS))
active(U111(tt, V2)) → mark(U112(isLNatKind(V2)))
active(U112(tt)) → mark(tt)
active(U12(tt, N, XS)) → mark(U13(isLNat(XS), N, XS))
active(U121(tt, V2)) → mark(U122(isLNatKind(V2)))
active(U122(tt)) → mark(tt)
active(U13(tt, N, XS)) → mark(U14(isLNatKind(XS), N, XS))
active(U131(tt)) → mark(tt)
active(U14(tt, N, XS)) → mark(snd(splitAt(N, XS)))
active(U141(tt)) → mark(tt)
active(U151(tt)) → mark(tt)
active(U161(tt)) → mark(tt)
active(U171(tt, V2)) → mark(U172(isLNatKind(V2)))
active(U172(tt)) → mark(tt)
active(U181(tt, V1)) → mark(U182(isLNatKind(V1), V1))
active(U182(tt, V1)) → mark(U183(isLNat(V1)))
active(U183(tt)) → mark(tt)
active(U191(tt, V1)) → mark(U192(isNaturalKind(V1), V1))
active(U192(tt, V1)) → mark(U193(isNatural(V1)))
active(U193(tt)) → mark(tt)
active(U201(tt, V1, V2)) → mark(U202(isNaturalKind(V1), V1, V2))
active(U202(tt, V1, V2)) → mark(U203(isLNatKind(V2), V1, V2))
active(U203(tt, V1, V2)) → mark(U204(isLNatKind(V2), V1, V2))
active(U204(tt, V1, V2)) → mark(U205(isNatural(V1), V2))
active(U205(tt, V2)) → mark(U206(isLNat(V2)))
active(U206(tt)) → mark(tt)
active(U21(tt, X, Y)) → mark(U22(isLNatKind(X), X, Y))
active(U211(tt)) → mark(tt)
active(U22(tt, X, Y)) → mark(U23(isLNat(Y), X, Y))
active(U221(tt)) → mark(tt)
active(U23(tt, X, Y)) → mark(U24(isLNatKind(Y), X))
active(U231(tt, V2)) → mark(U232(isLNatKind(V2)))
active(U232(tt)) → mark(tt)
active(U24(tt, X)) → mark(X)
active(U241(tt, V1, V2)) → mark(U242(isLNatKind(V1), V1, V2))
active(U242(tt, V1, V2)) → mark(U243(isLNatKind(V2), V1, V2))
active(U243(tt, V1, V2)) → mark(U244(isLNatKind(V2), V1, V2))
active(U244(tt, V1, V2)) → mark(U245(isLNat(V1), V2))
active(U245(tt, V2)) → mark(U246(isLNat(V2)))
active(U246(tt)) → mark(tt)
active(U251(tt, V1, V2)) → mark(U252(isNaturalKind(V1), V1, V2))
active(U252(tt, V1, V2)) → mark(U253(isLNatKind(V2), V1, V2))
active(U253(tt, V1, V2)) → mark(U254(isLNatKind(V2), V1, V2))
active(U254(tt, V1, V2)) → mark(U255(isNatural(V1), V2))
active(U255(tt, V2)) → mark(U256(isLNat(V2)))
active(U256(tt)) → mark(tt)
active(U261(tt, V2)) → mark(U262(isLNatKind(V2)))
active(U262(tt)) → mark(tt)
active(U271(tt, V2)) → mark(U272(isLNatKind(V2)))
active(U272(tt)) → mark(tt)
active(U281(tt, N)) → mark(U282(isNaturalKind(N), N))
active(U282(tt, N)) → mark(cons(N, natsFrom(s(N))))
active(U291(tt, N, XS)) → mark(U292(isNaturalKind(N), N, XS))
active(U292(tt, N, XS)) → mark(U293(isLNat(XS), N, XS))
active(U293(tt, N, XS)) → mark(U294(isLNatKind(XS), N, XS))
active(U294(tt, N, XS)) → mark(head(afterNth(N, XS)))
active(U301(tt, X, Y)) → mark(U302(isLNatKind(X), Y))
active(U302(tt, Y)) → mark(U303(isLNat(Y), Y))
active(U303(tt, Y)) → mark(U304(isLNatKind(Y), Y))
active(U304(tt, Y)) → mark(Y)
active(U31(tt, N, XS)) → mark(U32(isNaturalKind(N), N, XS))
active(U311(tt, XS)) → mark(U312(isLNatKind(XS), XS))
active(U312(tt, XS)) → mark(pair(nil, XS))
active(U32(tt, N, XS)) → mark(U33(isLNat(XS), N, XS))
active(U321(tt, N, X, XS)) → mark(U322(isNaturalKind(N), N, X, XS))
active(U322(tt, N, X, XS)) → mark(U323(isNatural(X), N, X, XS))
active(U323(tt, N, X, XS)) → mark(U324(isNaturalKind(X), N, X, XS))
active(U324(tt, N, X, XS)) → mark(U325(isLNat(XS), N, X, XS))
active(U325(tt, N, X, XS)) → mark(U326(isLNatKind(XS), N, X, XS))
active(U326(tt, N, X, XS)) → mark(U327(splitAt(N, XS), X))
active(U327(pair(YS, ZS), X)) → mark(pair(cons(X, YS), ZS))
active(U33(tt, N, XS)) → mark(U34(isLNatKind(XS), N))
active(U331(tt, N, XS)) → mark(U332(isNaturalKind(N), XS))
active(U332(tt, XS)) → mark(U333(isLNat(XS), XS))
active(U333(tt, XS)) → mark(U334(isLNatKind(XS), XS))
active(U334(tt, XS)) → mark(XS)
active(U34(tt, N)) → mark(N)
active(U341(tt, N, XS)) → mark(U342(isNaturalKind(N), N, XS))
active(U342(tt, N, XS)) → mark(U343(isLNat(XS), N, XS))
active(U343(tt, N, XS)) → mark(U344(isLNatKind(XS), N, XS))
active(U344(tt, N, XS)) → mark(fst(splitAt(N, XS)))
active(U41(tt, V1, V2)) → mark(U42(isNaturalKind(V1), V1, V2))
active(U42(tt, V1, V2)) → mark(U43(isLNatKind(V2), V1, V2))
active(U43(tt, V1, V2)) → mark(U44(isLNatKind(V2), V1, V2))
active(U44(tt, V1, V2)) → mark(U45(isNatural(V1), V2))
active(U45(tt, V2)) → mark(U46(isLNat(V2)))
active(U46(tt)) → mark(tt)
active(U51(tt, V1, V2)) → mark(U52(isNaturalKind(V1), V1, V2))
active(U52(tt, V1, V2)) → mark(U53(isLNatKind(V2), V1, V2))
active(U53(tt, V1, V2)) → mark(U54(isLNatKind(V2), V1, V2))
active(U54(tt, V1, V2)) → mark(U55(isNatural(V1), V2))
active(U55(tt, V2)) → mark(U56(isLNat(V2)))
active(U56(tt)) → mark(tt)
active(U61(tt, V1)) → mark(U62(isPLNatKind(V1), V1))
active(U62(tt, V1)) → mark(U63(isPLNat(V1)))
active(U63(tt)) → mark(tt)
active(U71(tt, V1)) → mark(U72(isNaturalKind(V1), V1))
active(U72(tt, V1)) → mark(U73(isNatural(V1)))
active(U73(tt)) → mark(tt)
active(U81(tt, V1)) → mark(U82(isPLNatKind(V1), V1))
active(U82(tt, V1)) → mark(U83(isPLNat(V1)))
active(U83(tt)) → mark(tt)
active(U91(tt, V1)) → mark(U92(isLNatKind(V1), V1))
active(U92(tt, V1)) → mark(U93(isLNat(V1)))
active(U93(tt)) → mark(tt)
active(afterNth(N, XS)) → mark(U11(isNatural(N), N, XS))
active(fst(pair(X, Y))) → mark(U21(isLNat(X), X, Y))
active(head(cons(N, XS))) → mark(U31(isNatural(N), N, XS))
active(isLNat(nil)) → mark(tt)
active(isLNat(afterNth(V1, V2))) → mark(U41(isNaturalKind(V1), V1, V2))
active(isLNat(cons(V1, V2))) → mark(U51(isNaturalKind(V1), V1, V2))
active(isLNat(fst(V1))) → mark(U61(isPLNatKind(V1), V1))
active(isLNat(natsFrom(V1))) → mark(U71(isNaturalKind(V1), V1))
active(isLNat(snd(V1))) → mark(U81(isPLNatKind(V1), V1))
active(isLNat(tail(V1))) → mark(U91(isLNatKind(V1), V1))
active(isLNat(take(V1, V2))) → mark(U101(isNaturalKind(V1), V1, V2))
active(isLNatKind(nil)) → mark(tt)
active(isLNatKind(afterNth(V1, V2))) → mark(U111(isNaturalKind(V1), V2))
active(isLNatKind(cons(V1, V2))) → mark(U121(isNaturalKind(V1), V2))
active(isLNatKind(fst(V1))) → mark(U131(isPLNatKind(V1)))
active(isLNatKind(natsFrom(V1))) → mark(U141(isNaturalKind(V1)))
active(isLNatKind(snd(V1))) → mark(U151(isPLNatKind(V1)))
active(isLNatKind(tail(V1))) → mark(U161(isLNatKind(V1)))
active(isLNatKind(take(V1, V2))) → mark(U171(isNaturalKind(V1), V2))
active(isNatural(0)) → mark(tt)
active(isNatural(head(V1))) → mark(U181(isLNatKind(V1), V1))
active(isNatural(s(V1))) → mark(U191(isNaturalKind(V1), V1))
active(isNatural(sel(V1, V2))) → mark(U201(isNaturalKind(V1), V1, V2))
active(isNaturalKind(0)) → mark(tt)
active(isNaturalKind(head(V1))) → mark(U211(isLNatKind(V1)))
active(isNaturalKind(s(V1))) → mark(U221(isNaturalKind(V1)))
active(isNaturalKind(sel(V1, V2))) → mark(U231(isNaturalKind(V1), V2))
active(isPLNat(pair(V1, V2))) → mark(U241(isLNatKind(V1), V1, V2))
active(isPLNat(splitAt(V1, V2))) → mark(U251(isNaturalKind(V1), V1, V2))
active(isPLNatKind(pair(V1, V2))) → mark(U261(isLNatKind(V1), V2))
active(isPLNatKind(splitAt(V1, V2))) → mark(U271(isNaturalKind(V1), V2))
active(natsFrom(N)) → mark(U281(isNatural(N), N))
active(sel(N, XS)) → mark(U291(isNatural(N), N, XS))
active(snd(pair(X, Y))) → mark(U301(isLNat(X), X, Y))
active(splitAt(0, XS)) → mark(U311(isLNat(XS), XS))
active(splitAt(s(N), cons(X, XS))) → mark(U321(isNatural(N), N, X, XS))
active(tail(cons(N, XS))) → mark(U331(isNatural(N), N, XS))
active(take(N, XS)) → mark(U341(isNatural(N), N, XS))
active(U101(X1, X2, X3)) → U101(active(X1), X2, X3)
active(U102(X1, X2, X3)) → U102(active(X1), X2, X3)
active(U103(X1, X2, X3)) → U103(active(X1), X2, X3)
active(U104(X1, X2, X3)) → U104(active(X1), X2, X3)
active(U105(X1, X2)) → U105(active(X1), X2)
active(U106(X)) → U106(active(X))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)
active(U12(X1, X2, X3)) → U12(active(X1), X2, X3)
active(U111(X1, X2)) → U111(active(X1), X2)
active(U112(X)) → U112(active(X))
active(U13(X1, X2, X3)) → U13(active(X1), X2, X3)
active(U121(X1, X2)) → U121(active(X1), X2)
active(U122(X)) → U122(active(X))
active(U14(X1, X2, X3)) → U14(active(X1), X2, X3)
active(U131(X)) → U131(active(X))
active(snd(X)) → snd(active(X))
active(splitAt(X1, X2)) → splitAt(active(X1), X2)
active(splitAt(X1, X2)) → splitAt(X1, active(X2))
active(U141(X)) → U141(active(X))
active(U151(X)) → U151(active(X))
active(U161(X)) → U161(active(X))
active(U171(X1, X2)) → U171(active(X1), X2)
active(U172(X)) → U172(active(X))
active(U181(X1, X2)) → U181(active(X1), X2)
active(U182(X1, X2)) → U182(active(X1), X2)
active(U183(X)) → U183(active(X))
active(U191(X1, X2)) → U191(active(X1), X2)
active(U192(X1, X2)) → U192(active(X1), X2)
active(U193(X)) → U193(active(X))
active(U201(X1, X2, X3)) → U201(active(X1), X2, X3)
active(U202(X1, X2, X3)) → U202(active(X1), X2, X3)
active(U203(X1, X2, X3)) → U203(active(X1), X2, X3)
active(U204(X1, X2, X3)) → U204(active(X1), X2, X3)
active(U205(X1, X2)) → U205(active(X1), X2)
active(U206(X)) → U206(active(X))
active(U21(X1, X2, X3)) → U21(active(X1), X2, X3)
active(U22(X1, X2, X3)) → U22(active(X1), X2, X3)
active(U211(X)) → U211(active(X))
active(U23(X1, X2, X3)) → U23(active(X1), X2, X3)
active(U221(X)) → U221(active(X))
active(U24(X1, X2)) → U24(active(X1), X2)
active(U231(X1, X2)) → U231(active(X1), X2)
active(U232(X)) → U232(active(X))
active(U241(X1, X2, X3)) → U241(active(X1), X2, X3)
active(U242(X1, X2, X3)) → U242(active(X1), X2, X3)
active(U243(X1, X2, X3)) → U243(active(X1), X2, X3)
active(U244(X1, X2, X3)) → U244(active(X1), X2, X3)
active(U245(X1, X2)) → U245(active(X1), X2)
active(U246(X)) → U246(active(X))
active(U251(X1, X2, X3)) → U251(active(X1), X2, X3)
active(U252(X1, X2, X3)) → U252(active(X1), X2, X3)
active(U253(X1, X2, X3)) → U253(active(X1), X2, X3)
active(U254(X1, X2, X3)) → U254(active(X1), X2, X3)
active(U255(X1, X2)) → U255(active(X1), X2)
active(U256(X)) → U256(active(X))
active(U261(X1, X2)) → U261(active(X1), X2)
active(U262(X)) → U262(active(X))
active(U271(X1, X2)) → U271(active(X1), X2)
active(U272(X)) → U272(active(X))
active(U281(X1, X2)) → U281(active(X1), X2)
active(U282(X1, X2)) → U282(active(X1), X2)
active(cons(X1, X2)) → cons(active(X1), X2)
active(natsFrom(X)) → natsFrom(active(X))
active(s(X)) → s(active(X))
active(U291(X1, X2, X3)) → U291(active(X1), X2, X3)
active(U292(X1, X2, X3)) → U292(active(X1), X2, X3)
active(U293(X1, X2, X3)) → U293(active(X1), X2, X3)
active(U294(X1, X2, X3)) → U294(active(X1), X2, X3)
active(head(X)) → head(active(X))
active(afterNth(X1, X2)) → afterNth(active(X1), X2)
active(afterNth(X1, X2)) → afterNth(X1, active(X2))
active(U301(X1, X2, X3)) → U301(active(X1), X2, X3)
active(U302(X1, X2)) → U302(active(X1), X2)
active(U303(X1, X2)) → U303(active(X1), X2)
active(U304(X1, X2)) → U304(active(X1), X2)
active(U31(X1, X2, X3)) → U31(active(X1), X2, X3)
active(U32(X1, X2, X3)) → U32(active(X1), X2, X3)
active(U311(X1, X2)) → U311(active(X1), X2)
active(U312(X1, X2)) → U312(active(X1), X2)
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(U33(X1, X2, X3)) → U33(active(X1), X2, X3)
active(U321(X1, X2, X3, X4)) → U321(active(X1), X2, X3, X4)
active(U322(X1, X2, X3, X4)) → U322(active(X1), X2, X3, X4)
active(U323(X1, X2, X3, X4)) → U323(active(X1), X2, X3, X4)
active(U324(X1, X2, X3, X4)) → U324(active(X1), X2, X3, X4)
active(U325(X1, X2, X3, X4)) → U325(active(X1), X2, X3, X4)
active(U326(X1, X2, X3, X4)) → U326(active(X1), X2, X3, X4)
active(U327(X1, X2)) → U327(active(X1), X2)
active(U34(X1, X2)) → U34(active(X1), X2)
active(U331(X1, X2, X3)) → U331(active(X1), X2, X3)
active(U332(X1, X2)) → U332(active(X1), X2)
active(U333(X1, X2)) → U333(active(X1), X2)
active(U334(X1, X2)) → U334(active(X1), X2)
active(U341(X1, X2, X3)) → U341(active(X1), X2, X3)
active(U342(X1, X2, X3)) → U342(active(X1), X2, X3)
active(U343(X1, X2, X3)) → U343(active(X1), X2, X3)
active(U344(X1, X2, X3)) → U344(active(X1), X2, X3)
active(fst(X)) → fst(active(X))
active(U41(X1, X2, X3)) → U41(active(X1), X2, X3)
active(U42(X1, X2, X3)) → U42(active(X1), X2, X3)
active(U43(X1, X2, X3)) → U43(active(X1), X2, X3)
active(U44(X1, X2, X3)) → U44(active(X1), X2, X3)
active(U45(X1, X2)) → U45(active(X1), X2)
active(U46(X)) → U46(active(X))
active(U51(X1, X2, X3)) → U51(active(X1), X2, X3)
active(U52(X1, X2, X3)) → U52(active(X1), X2, X3)
active(U53(X1, X2, X3)) → U53(active(X1), X2, X3)
active(U54(X1, X2, X3)) → U54(active(X1), X2, X3)
active(U55(X1, X2)) → U55(active(X1), X2)
active(U56(X)) → U56(active(X))
active(U61(X1, X2)) → U61(active(X1), X2)
active(U62(X1, X2)) → U62(active(X1), X2)
active(U63(X)) → U63(active(X))
active(U71(X1, X2)) → U71(active(X1), X2)
active(U72(X1, X2)) → U72(active(X1), X2)
active(U73(X)) → U73(active(X))
active(U81(X1, X2)) → U81(active(X1), X2)
active(U82(X1, X2)) → U82(active(X1), X2)
active(U83(X)) → U83(active(X))
active(U91(X1, X2)) → U91(active(X1), X2)
active(U92(X1, X2)) → U92(active(X1), X2)
active(U93(X)) → U93(active(X))
active(tail(X)) → tail(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(sel(X1, X2)) → sel(active(X1), X2)
active(sel(X1, X2)) → sel(X1, active(X2))
U101(mark(X1), X2, X3) → mark(U101(X1, X2, X3))
U102(mark(X1), X2, X3) → mark(U102(X1, X2, X3))
U103(mark(X1), X2, X3) → mark(U103(X1, X2, X3))
U104(mark(X1), X2, X3) → mark(U104(X1, X2, X3))
U105(mark(X1), X2) → mark(U105(X1, X2))
U106(mark(X)) → mark(U106(X))
U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
U12(mark(X1), X2, X3) → mark(U12(X1, X2, X3))
U111(mark(X1), X2) → mark(U111(X1, X2))
U112(mark(X)) → mark(U112(X))
U13(mark(X1), X2, X3) → mark(U13(X1, X2, X3))
U121(mark(X1), X2) → mark(U121(X1, X2))
U122(mark(X)) → mark(U122(X))
U14(mark(X1), X2, X3) → mark(U14(X1, X2, X3))
U131(mark(X)) → mark(U131(X))
snd(mark(X)) → mark(snd(X))
splitAt(mark(X1), X2) → mark(splitAt(X1, X2))
splitAt(X1, mark(X2)) → mark(splitAt(X1, X2))
U141(mark(X)) → mark(U141(X))
U151(mark(X)) → mark(U151(X))
U161(mark(X)) → mark(U161(X))
U171(mark(X1), X2) → mark(U171(X1, X2))
U172(mark(X)) → mark(U172(X))
U181(mark(X1), X2) → mark(U181(X1, X2))
U182(mark(X1), X2) → mark(U182(X1, X2))
U183(mark(X)) → mark(U183(X))
U191(mark(X1), X2) → mark(U191(X1, X2))
U192(mark(X1), X2) → mark(U192(X1, X2))
U193(mark(X)) → mark(U193(X))
U201(mark(X1), X2, X3) → mark(U201(X1, X2, X3))
U202(mark(X1), X2, X3) → mark(U202(X1, X2, X3))
U203(mark(X1), X2, X3) → mark(U203(X1, X2, X3))
U204(mark(X1), X2, X3) → mark(U204(X1, X2, X3))
U205(mark(X1), X2) → mark(U205(X1, X2))
U206(mark(X)) → mark(U206(X))
U21(mark(X1), X2, X3) → mark(U21(X1, X2, X3))
U22(mark(X1), X2, X3) → mark(U22(X1, X2, X3))
U211(mark(X)) → mark(U211(X))
U23(mark(X1), X2, X3) → mark(U23(X1, X2, X3))
U221(mark(X)) → mark(U221(X))
U24(mark(X1), X2) → mark(U24(X1, X2))
U231(mark(X1), X2) → mark(U231(X1, X2))
U232(mark(X)) → mark(U232(X))
U241(mark(X1), X2, X3) → mark(U241(X1, X2, X3))
U242(mark(X1), X2, X3) → mark(U242(X1, X2, X3))
U243(mark(X1), X2, X3) → mark(U243(X1, X2, X3))
U244(mark(X1), X2, X3) → mark(U244(X1, X2, X3))
U245(mark(X1), X2) → mark(U245(X1, X2))
U246(mark(X)) → mark(U246(X))
U251(mark(X1), X2, X3) → mark(U251(X1, X2, X3))
U252(mark(X1), X2, X3) → mark(U252(X1, X2, X3))
U253(mark(X1), X2, X3) → mark(U253(X1, X2, X3))
U254(mark(X1), X2, X3) → mark(U254(X1, X2, X3))
U255(mark(X1), X2) → mark(U255(X1, X2))
U256(mark(X)) → mark(U256(X))
U261(mark(X1), X2) → mark(U261(X1, X2))
U262(mark(X)) → mark(U262(X))
U271(mark(X1), X2) → mark(U271(X1, X2))
U272(mark(X)) → mark(U272(X))
U281(mark(X1), X2) → mark(U281(X1, X2))
U282(mark(X1), X2) → mark(U282(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
natsFrom(mark(X)) → mark(natsFrom(X))
s(mark(X)) → mark(s(X))
U291(mark(X1), X2, X3) → mark(U291(X1, X2, X3))
U292(mark(X1), X2, X3) → mark(U292(X1, X2, X3))
U293(mark(X1), X2, X3) → mark(U293(X1, X2, X3))
U294(mark(X1), X2, X3) → mark(U294(X1, X2, X3))
head(mark(X)) → mark(head(X))
afterNth(mark(X1), X2) → mark(afterNth(X1, X2))
afterNth(X1, mark(X2)) → mark(afterNth(X1, X2))
U301(mark(X1), X2, X3) → mark(U301(X1, X2, X3))
U302(mark(X1), X2) → mark(U302(X1, X2))
U303(mark(X1), X2) → mark(U303(X1, X2))
U304(mark(X1), X2) → mark(U304(X1, X2))
U31(mark(X1), X2, X3) → mark(U31(X1, X2, X3))
U32(mark(X1), X2, X3) → mark(U32(X1, X2, X3))
U311(mark(X1), X2) → mark(U311(X1, X2))
U312(mark(X1), X2) → mark(U312(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
U33(mark(X1), X2, X3) → mark(U33(X1, X2, X3))
U321(mark(X1), X2, X3, X4) → mark(U321(X1, X2, X3, X4))
U322(mark(X1), X2, X3, X4) → mark(U322(X1, X2, X3, X4))
U323(mark(X1), X2, X3, X4) → mark(U323(X1, X2, X3, X4))
U324(mark(X1), X2, X3, X4) → mark(U324(X1, X2, X3, X4))
U325(mark(X1), X2, X3, X4) → mark(U325(X1, X2, X3, X4))
U326(mark(X1), X2, X3, X4) → mark(U326(X1, X2, X3, X4))
U327(mark(X1), X2) → mark(U327(X1, X2))
U34(mark(X1), X2) → mark(U34(X1, X2))
U331(mark(X1), X2, X3) → mark(U331(X1, X2, X3))
U332(mark(X1), X2) → mark(U332(X1, X2))
U333(mark(X1), X2) → mark(U333(X1, X2))
U334(mark(X1), X2) → mark(U334(X1, X2))
U341(mark(X1), X2, X3) → mark(U341(X1, X2, X3))
U342(mark(X1), X2, X3) → mark(U342(X1, X2, X3))
U343(mark(X1), X2, X3) → mark(U343(X1, X2, X3))
U344(mark(X1), X2, X3) → mark(U344(X1, X2, X3))
fst(mark(X)) → mark(fst(X))
U41(mark(X1), X2, X3) → mark(U41(X1, X2, X3))
U42(mark(X1), X2, X3) → mark(U42(X1, X2, X3))
U43(mark(X1), X2, X3) → mark(U43(X1, X2, X3))
U44(mark(X1), X2, X3) → mark(U44(X1, X2, X3))
U45(mark(X1), X2) → mark(U45(X1, X2))
U46(mark(X)) → mark(U46(X))
U51(mark(X1), X2, X3) → mark(U51(X1, X2, X3))
U52(mark(X1), X2, X3) → mark(U52(X1, X2, X3))
U53(mark(X1), X2, X3) → mark(U53(X1, X2, X3))
U54(mark(X1), X2, X3) → mark(U54(X1, X2, X3))
U55(mark(X1), X2) → mark(U55(X1, X2))
U56(mark(X)) → mark(U56(X))
U61(mark(X1), X2) → mark(U61(X1, X2))
U62(mark(X1), X2) → mark(U62(X1, X2))
U63(mark(X)) → mark(U63(X))
U71(mark(X1), X2) → mark(U71(X1, X2))
U72(mark(X1), X2) → mark(U72(X1, X2))
U73(mark(X)) → mark(U73(X))
U81(mark(X1), X2) → mark(U81(X1, X2))
U82(mark(X1), X2) → mark(U82(X1, X2))
U83(mark(X)) → mark(U83(X))
U91(mark(X1), X2) → mark(U91(X1, X2))
U92(mark(X1), X2) → mark(U92(X1, X2))
U93(mark(X)) → mark(U93(X))
tail(mark(X)) → mark(tail(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
sel(mark(X1), X2) → mark(sel(X1, X2))
sel(X1, mark(X2)) → mark(sel(X1, X2))
proper(U101(X1, X2, X3)) → U101(proper(X1), proper(X2), proper(X3))
proper(tt) → ok(tt)
proper(U102(X1, X2, X3)) → U102(proper(X1), proper(X2), proper(X3))
proper(isNaturalKind(X)) → isNaturalKind(proper(X))
proper(U103(X1, X2, X3)) → U103(proper(X1), proper(X2), proper(X3))
proper(isLNatKind(X)) → isLNatKind(proper(X))
proper(U104(X1, X2, X3)) → U104(proper(X1), proper(X2), proper(X3))
proper(U105(X1, X2)) → U105(proper(X1), proper(X2))
proper(isNatural(X)) → isNatural(proper(X))
proper(U106(X)) → U106(proper(X))
proper(isLNat(X)) → isLNat(proper(X))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))
proper(U12(X1, X2, X3)) → U12(proper(X1), proper(X2), proper(X3))
proper(U111(X1, X2)) → U111(proper(X1), proper(X2))
proper(U112(X)) → U112(proper(X))
proper(U13(X1, X2, X3)) → U13(proper(X1), proper(X2), proper(X3))
proper(U121(X1, X2)) → U121(proper(X1), proper(X2))
proper(U122(X)) → U122(proper(X))
proper(U14(X1, X2, X3)) → U14(proper(X1), proper(X2), proper(X3))
proper(U131(X)) → U131(proper(X))
proper(snd(X)) → snd(proper(X))
proper(splitAt(X1, X2)) → splitAt(proper(X1), proper(X2))
proper(U141(X)) → U141(proper(X))
proper(U151(X)) → U151(proper(X))
proper(U161(X)) → U161(proper(X))
proper(U171(X1, X2)) → U171(proper(X1), proper(X2))
proper(U172(X)) → U172(proper(X))
proper(U181(X1, X2)) → U181(proper(X1), proper(X2))
proper(U182(X1, X2)) → U182(proper(X1), proper(X2))
proper(U183(X)) → U183(proper(X))
proper(U191(X1, X2)) → U191(proper(X1), proper(X2))
proper(U192(X1, X2)) → U192(proper(X1), proper(X2))
proper(U193(X)) → U193(proper(X))
proper(U201(X1, X2, X3)) → U201(proper(X1), proper(X2), proper(X3))
proper(U202(X1, X2, X3)) → U202(proper(X1), proper(X2), proper(X3))
proper(U203(X1, X2, X3)) → U203(proper(X1), proper(X2), proper(X3))
proper(U204(X1, X2, X3)) → U204(proper(X1), proper(X2), proper(X3))
proper(U205(X1, X2)) → U205(proper(X1), proper(X2))
proper(U206(X)) → U206(proper(X))
proper(U21(X1, X2, X3)) → U21(proper(X1), proper(X2), proper(X3))
proper(U22(X1, X2, X3)) → U22(proper(X1), proper(X2), proper(X3))
proper(U211(X)) → U211(proper(X))
proper(U23(X1, X2, X3)) → U23(proper(X1), proper(X2), proper(X3))
proper(U221(X)) → U221(proper(X))
proper(U24(X1, X2)) → U24(proper(X1), proper(X2))
proper(U231(X1, X2)) → U231(proper(X1), proper(X2))
proper(U232(X)) → U232(proper(X))
proper(U241(X1, X2, X3)) → U241(proper(X1), proper(X2), proper(X3))
proper(U242(X1, X2, X3)) → U242(proper(X1), proper(X2), proper(X3))
proper(U243(X1, X2, X3)) → U243(proper(X1), proper(X2), proper(X3))
proper(U244(X1, X2, X3)) → U244(proper(X1), proper(X2), proper(X3))
proper(U245(X1, X2)) → U245(proper(X1), proper(X2))
proper(U246(X)) → U246(proper(X))
proper(U251(X1, X2, X3)) → U251(proper(X1), proper(X2), proper(X3))
proper(U252(X1, X2, X3)) → U252(proper(X1), proper(X2), proper(X3))
proper(U253(X1, X2, X3)) → U253(proper(X1), proper(X2), proper(X3))
proper(U254(X1, X2, X3)) → U254(proper(X1), proper(X2), proper(X3))
proper(U255(X1, X2)) → U255(proper(X1), proper(X2))
proper(U256(X)) → U256(proper(X))
proper(U261(X1, X2)) → U261(proper(X1), proper(X2))
proper(U262(X)) → U262(proper(X))
proper(U271(X1, X2)) → U271(proper(X1), proper(X2))
proper(U272(X)) → U272(proper(X))
proper(U281(X1, X2)) → U281(proper(X1), proper(X2))
proper(U282(X1, X2)) → U282(proper(X1), proper(X2))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(natsFrom(X)) → natsFrom(proper(X))
proper(s(X)) → s(proper(X))
proper(U291(X1, X2, X3)) → U291(proper(X1), proper(X2), proper(X3))
proper(U292(X1, X2, X3)) → U292(proper(X1), proper(X2), proper(X3))
proper(U293(X1, X2, X3)) → U293(proper(X1), proper(X2), proper(X3))
proper(U294(X1, X2, X3)) → U294(proper(X1), proper(X2), proper(X3))
proper(head(X)) → head(proper(X))
proper(afterNth(X1, X2)) → afterNth(proper(X1), proper(X2))
proper(U301(X1, X2, X3)) → U301(proper(X1), proper(X2), proper(X3))
proper(U302(X1, X2)) → U302(proper(X1), proper(X2))
proper(U303(X1, X2)) → U303(proper(X1), proper(X2))
proper(U304(X1, X2)) → U304(proper(X1), proper(X2))
proper(U31(X1, X2, X3)) → U31(proper(X1), proper(X2), proper(X3))
proper(U32(X1, X2, X3)) → U32(proper(X1), proper(X2), proper(X3))
proper(U311(X1, X2)) → U311(proper(X1), proper(X2))
proper(U312(X1, X2)) → U312(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(U33(X1, X2, X3)) → U33(proper(X1), proper(X2), proper(X3))
proper(U321(X1, X2, X3, X4)) → U321(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U322(X1, X2, X3, X4)) → U322(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U323(X1, X2, X3, X4)) → U323(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U324(X1, X2, X3, X4)) → U324(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U325(X1, X2, X3, X4)) → U325(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U326(X1, X2, X3, X4)) → U326(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U327(X1, X2)) → U327(proper(X1), proper(X2))
proper(U34(X1, X2)) → U34(proper(X1), proper(X2))
proper(U331(X1, X2, X3)) → U331(proper(X1), proper(X2), proper(X3))
proper(U332(X1, X2)) → U332(proper(X1), proper(X2))
proper(U333(X1, X2)) → U333(proper(X1), proper(X2))
proper(U334(X1, X2)) → U334(proper(X1), proper(X2))
proper(U341(X1, X2, X3)) → U341(proper(X1), proper(X2), proper(X3))
proper(U342(X1, X2, X3)) → U342(proper(X1), proper(X2), proper(X3))
proper(U343(X1, X2, X3)) → U343(proper(X1), proper(X2), proper(X3))
proper(U344(X1, X2, X3)) → U344(proper(X1), proper(X2), proper(X3))
proper(fst(X)) → fst(proper(X))
proper(U41(X1, X2, X3)) → U41(proper(X1), proper(X2), proper(X3))
proper(U42(X1, X2, X3)) → U42(proper(X1), proper(X2), proper(X3))
proper(U43(X1, X2, X3)) → U43(proper(X1), proper(X2), proper(X3))
proper(U44(X1, X2, X3)) → U44(proper(X1), proper(X2), proper(X3))
proper(U45(X1, X2)) → U45(proper(X1), proper(X2))
proper(U46(X)) → U46(proper(X))
proper(U51(X1, X2, X3)) → U51(proper(X1), proper(X2), proper(X3))
proper(U52(X1, X2, X3)) → U52(proper(X1), proper(X2), proper(X3))
proper(U53(X1, X2, X3)) → U53(proper(X1), proper(X2), proper(X3))
proper(U54(X1, X2, X3)) → U54(proper(X1), proper(X2), proper(X3))
proper(U55(X1, X2)) → U55(proper(X1), proper(X2))
proper(U56(X)) → U56(proper(X))
proper(U61(X1, X2)) → U61(proper(X1), proper(X2))
proper(U62(X1, X2)) → U62(proper(X1), proper(X2))
proper(isPLNatKind(X)) → isPLNatKind(proper(X))
proper(U63(X)) → U63(proper(X))
proper(isPLNat(X)) → isPLNat(proper(X))
proper(U71(X1, X2)) → U71(proper(X1), proper(X2))
proper(U72(X1, X2)) → U72(proper(X1), proper(X2))
proper(U73(X)) → U73(proper(X))
proper(U81(X1, X2)) → U81(proper(X1), proper(X2))
proper(U82(X1, X2)) → U82(proper(X1), proper(X2))
proper(U83(X)) → U83(proper(X))
proper(U91(X1, X2)) → U91(proper(X1), proper(X2))
proper(U92(X1, X2)) → U92(proper(X1), proper(X2))
proper(U93(X)) → U93(proper(X))
proper(tail(X)) → tail(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(0) → ok(0)
proper(sel(X1, X2)) → sel(proper(X1), proper(X2))
U101(ok(X1), ok(X2), ok(X3)) → ok(U101(X1, X2, X3))
U102(ok(X1), ok(X2), ok(X3)) → ok(U102(X1, X2, X3))
isNaturalKind(ok(X)) → ok(isNaturalKind(X))
U103(ok(X1), ok(X2), ok(X3)) → ok(U103(X1, X2, X3))
isLNatKind(ok(X)) → ok(isLNatKind(X))
U104(ok(X1), ok(X2), ok(X3)) → ok(U104(X1, X2, X3))
U105(ok(X1), ok(X2)) → ok(U105(X1, X2))
isNatural(ok(X)) → ok(isNatural(X))
U106(ok(X)) → ok(U106(X))
isLNat(ok(X)) → ok(isLNat(X))
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))
U12(ok(X1), ok(X2), ok(X3)) → ok(U12(X1, X2, X3))
U111(ok(X1), ok(X2)) → ok(U111(X1, X2))
U112(ok(X)) → ok(U112(X))
U13(ok(X1), ok(X2), ok(X3)) → ok(U13(X1, X2, X3))
U121(ok(X1), ok(X2)) → ok(U121(X1, X2))
U122(ok(X)) → ok(U122(X))
U14(ok(X1), ok(X2), ok(X3)) → ok(U14(X1, X2, X3))
U131(ok(X)) → ok(U131(X))
snd(ok(X)) → ok(snd(X))
splitAt(ok(X1), ok(X2)) → ok(splitAt(X1, X2))
U141(ok(X)) → ok(U141(X))
U151(ok(X)) → ok(U151(X))
U161(ok(X)) → ok(U161(X))
U171(ok(X1), ok(X2)) → ok(U171(X1, X2))
U172(ok(X)) → ok(U172(X))
U181(ok(X1), ok(X2)) → ok(U181(X1, X2))
U182(ok(X1), ok(X2)) → ok(U182(X1, X2))
U183(ok(X)) → ok(U183(X))
U191(ok(X1), ok(X2)) → ok(U191(X1, X2))
U192(ok(X1), ok(X2)) → ok(U192(X1, X2))
U193(ok(X)) → ok(U193(X))
U201(ok(X1), ok(X2), ok(X3)) → ok(U201(X1, X2, X3))
U202(ok(X1), ok(X2), ok(X3)) → ok(U202(X1, X2, X3))
U203(ok(X1), ok(X2), ok(X3)) → ok(U203(X1, X2, X3))
U204(ok(X1), ok(X2), ok(X3)) → ok(U204(X1, X2, X3))
U205(ok(X1), ok(X2)) → ok(U205(X1, X2))
U206(ok(X)) → ok(U206(X))
U21(ok(X1), ok(X2), ok(X3)) → ok(U21(X1, X2, X3))
U22(ok(X1), ok(X2), ok(X3)) → ok(U22(X1, X2, X3))
U211(ok(X)) → ok(U211(X))
U23(ok(X1), ok(X2), ok(X3)) → ok(U23(X1, X2, X3))
U221(ok(X)) → ok(U221(X))
U24(ok(X1), ok(X2)) → ok(U24(X1, X2))
U231(ok(X1), ok(X2)) → ok(U231(X1, X2))
U232(ok(X)) → ok(U232(X))
U241(ok(X1), ok(X2), ok(X3)) → ok(U241(X1, X2, X3))
U242(ok(X1), ok(X2), ok(X3)) → ok(U242(X1, X2, X3))
U243(ok(X1), ok(X2), ok(X3)) → ok(U243(X1, X2, X3))
U244(ok(X1), ok(X2), ok(X3)) → ok(U244(X1, X2, X3))
U245(ok(X1), ok(X2)) → ok(U245(X1, X2))
U246(ok(X)) → ok(U246(X))
U251(ok(X1), ok(X2), ok(X3)) → ok(U251(X1, X2, X3))
U252(ok(X1), ok(X2), ok(X3)) → ok(U252(X1, X2, X3))
U253(ok(X1), ok(X2), ok(X3)) → ok(U253(X1, X2, X3))
U254(ok(X1), ok(X2), ok(X3)) → ok(U254(X1, X2, X3))
U255(ok(X1), ok(X2)) → ok(U255(X1, X2))
U256(ok(X)) → ok(U256(X))
U261(ok(X1), ok(X2)) → ok(U261(X1, X2))
U262(ok(X)) → ok(U262(X))
U271(ok(X1), ok(X2)) → ok(U271(X1, X2))
U272(ok(X)) → ok(U272(X))
U281(ok(X1), ok(X2)) → ok(U281(X1, X2))
U282(ok(X1), ok(X2)) → ok(U282(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
natsFrom(ok(X)) → ok(natsFrom(X))
s(ok(X)) → ok(s(X))
U291(ok(X1), ok(X2), ok(X3)) → ok(U291(X1, X2, X3))
U292(ok(X1), ok(X2), ok(X3)) → ok(U292(X1, X2, X3))
U293(ok(X1), ok(X2), ok(X3)) → ok(U293(X1, X2, X3))
U294(ok(X1), ok(X2), ok(X3)) → ok(U294(X1, X2, X3))
head(ok(X)) → ok(head(X))
afterNth(ok(X1), ok(X2)) → ok(afterNth(X1, X2))
U301(ok(X1), ok(X2), ok(X3)) → ok(U301(X1, X2, X3))
U302(ok(X1), ok(X2)) → ok(U302(X1, X2))
U303(ok(X1), ok(X2)) → ok(U303(X1, X2))
U304(ok(X1), ok(X2)) → ok(U304(X1, X2))
U31(ok(X1), ok(X2), ok(X3)) → ok(U31(X1, X2, X3))
U32(ok(X1), ok(X2), ok(X3)) → ok(U32(X1, X2, X3))
U311(ok(X1), ok(X2)) → ok(U311(X1, X2))
U312(ok(X1), ok(X2)) → ok(U312(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
U33(ok(X1), ok(X2), ok(X3)) → ok(U33(X1, X2, X3))
U321(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U321(X1, X2, X3, X4))
U322(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U322(X1, X2, X3, X4))
U323(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U323(X1, X2, X3, X4))
U324(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U324(X1, X2, X3, X4))
U325(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U325(X1, X2, X3, X4))
U326(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U326(X1, X2, X3, X4))
U327(ok(X1), ok(X2)) → ok(U327(X1, X2))
U34(ok(X1), ok(X2)) → ok(U34(X1, X2))
U331(ok(X1), ok(X2), ok(X3)) → ok(U331(X1, X2, X3))
U332(ok(X1), ok(X2)) → ok(U332(X1, X2))
U333(ok(X1), ok(X2)) → ok(U333(X1, X2))
U334(ok(X1), ok(X2)) → ok(U334(X1, X2))
U341(ok(X1), ok(X2), ok(X3)) → ok(U341(X1, X2, X3))
U342(ok(X1), ok(X2), ok(X3)) → ok(U342(X1, X2, X3))
U343(ok(X1), ok(X2), ok(X3)) → ok(U343(X1, X2, X3))
U344(ok(X1), ok(X2), ok(X3)) → ok(U344(X1, X2, X3))
fst(ok(X)) → ok(fst(X))
U41(ok(X1), ok(X2), ok(X3)) → ok(U41(X1, X2, X3))
U42(ok(X1), ok(X2), ok(X3)) → ok(U42(X1, X2, X3))
U43(ok(X1), ok(X2), ok(X3)) → ok(U43(X1, X2, X3))
U44(ok(X1), ok(X2), ok(X3)) → ok(U44(X1, X2, X3))
U45(ok(X1), ok(X2)) → ok(U45(X1, X2))
U46(ok(X)) → ok(U46(X))
U51(ok(X1), ok(X2), ok(X3)) → ok(U51(X1, X2, X3))
U52(ok(X1), ok(X2), ok(X3)) → ok(U52(X1, X2, X3))
U53(ok(X1), ok(X2), ok(X3)) → ok(U53(X1, X2, X3))
U54(ok(X1), ok(X2), ok(X3)) → ok(U54(X1, X2, X3))
U55(ok(X1), ok(X2)) → ok(U55(X1, X2))
U56(ok(X)) → ok(U56(X))
U61(ok(X1), ok(X2)) → ok(U61(X1, X2))
U62(ok(X1), ok(X2)) → ok(U62(X1, X2))
isPLNatKind(ok(X)) → ok(isPLNatKind(X))
U63(ok(X)) → ok(U63(X))
isPLNat(ok(X)) → ok(isPLNat(X))
U71(ok(X1), ok(X2)) → ok(U71(X1, X2))
U72(ok(X1), ok(X2)) → ok(U72(X1, X2))
U73(ok(X)) → ok(U73(X))
U81(ok(X1), ok(X2)) → ok(U81(X1, X2))
U82(ok(X1), ok(X2)) → ok(U82(X1, X2))
U83(ok(X)) → ok(U83(X))
U91(ok(X1), ok(X2)) → ok(U91(X1, X2))
U92(ok(X1), ok(X2)) → ok(U92(X1, X2))
U93(ok(X)) → ok(U93(X))
tail(ok(X)) → ok(tail(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
sel(ok(X1), ok(X2)) → ok(sel(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Q is empty.
Special symbols used for the transformation (see [GM04]):
top: top, active: active, mark: mark, ok: ok, proper: proper
The replacement map contains the following entries:

U101: {1}
tt: empty set
U102: {1}
isNaturalKind: empty set
U103: {1}
isLNatKind: empty set
U104: {1}
U105: {1}
isNatural: empty set
U106: {1}
isLNat: empty set
U11: {1}
U12: {1}
U111: {1}
U112: {1}
U13: {1}
U121: {1}
U122: {1}
U14: {1}
U131: {1}
snd: {1}
splitAt: {1, 2}
U141: {1}
U151: {1}
U161: {1}
U171: {1}
U172: {1}
U181: {1}
U182: {1}
U183: {1}
U191: {1}
U192: {1}
U193: {1}
U201: {1}
U202: {1}
U203: {1}
U204: {1}
U205: {1}
U206: {1}
U21: {1}
U22: {1}
U211: {1}
U23: {1}
U221: {1}
U24: {1}
U231: {1}
U232: {1}
U241: {1}
U242: {1}
U243: {1}
U244: {1}
U245: {1}
U246: {1}
U251: {1}
U252: {1}
U253: {1}
U254: {1}
U255: {1}
U256: {1}
U261: {1}
U262: {1}
U271: {1}
U272: {1}
U281: {1}
U282: {1}
cons: {1}
natsFrom: {1}
s: {1}
U291: {1}
U292: {1}
U293: {1}
U294: {1}
head: {1}
afterNth: {1, 2}
U301: {1}
U302: {1}
U303: {1}
U304: {1}
U31: {1}
U32: {1}
U311: {1}
U312: {1}
pair: {1, 2}
nil: empty set
U33: {1}
U321: {1}
U322: {1}
U323: {1}
U324: {1}
U325: {1}
U326: {1}
U327: {1}
U34: {1}
U331: {1}
U332: {1}
U333: {1}
U334: {1}
U341: {1}
U342: {1}
U343: {1}
U344: {1}
fst: {1}
U41: {1}
U42: {1}
U43: {1}
U44: {1}
U45: {1}
U46: {1}
U51: {1}
U52: {1}
U53: {1}
U54: {1}
U55: {1}
U56: {1}
U61: {1}
U62: {1}
isPLNatKind: empty set
U63: {1}
isPLNat: empty set
U71: {1}
U72: {1}
U73: {1}
U81: {1}
U82: {1}
U83: {1}
U91: {1}
U92: {1}
U93: {1}
tail: {1}
take: {1, 2}
0: empty set
sel: {1, 2}
The QTRS contained all rules created by the complete Giesl-Middeldorp transformation. Therefore, the inverse transformation is complete (and sound).

(2) Obligation:

Context-sensitive rewrite system:
The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

The replacement map contains the following entries:

U101: {1}
tt: empty set
U102: {1}
isNaturalKind: empty set
U103: {1}
isLNatKind: empty set
U104: {1}
U105: {1}
isNatural: empty set
U106: {1}
isLNat: empty set
U11: {1}
U12: {1}
U111: {1}
U112: {1}
U13: {1}
U121: {1}
U122: {1}
U14: {1}
U131: {1}
snd: {1}
splitAt: {1, 2}
U141: {1}
U151: {1}
U161: {1}
U171: {1}
U172: {1}
U181: {1}
U182: {1}
U183: {1}
U191: {1}
U192: {1}
U193: {1}
U201: {1}
U202: {1}
U203: {1}
U204: {1}
U205: {1}
U206: {1}
U21: {1}
U22: {1}
U211: {1}
U23: {1}
U221: {1}
U24: {1}
U231: {1}
U232: {1}
U241: {1}
U242: {1}
U243: {1}
U244: {1}
U245: {1}
U246: {1}
U251: {1}
U252: {1}
U253: {1}
U254: {1}
U255: {1}
U256: {1}
U261: {1}
U262: {1}
U271: {1}
U272: {1}
U281: {1}
U282: {1}
cons: {1}
natsFrom: {1}
s: {1}
U291: {1}
U292: {1}
U293: {1}
U294: {1}
head: {1}
afterNth: {1, 2}
U301: {1}
U302: {1}
U303: {1}
U304: {1}
U31: {1}
U32: {1}
U311: {1}
U312: {1}
pair: {1, 2}
nil: empty set
U33: {1}
U321: {1}
U322: {1}
U323: {1}
U324: {1}
U325: {1}
U326: {1}
U327: {1}
U34: {1}
U331: {1}
U332: {1}
U333: {1}
U334: {1}
U341: {1}
U342: {1}
U343: {1}
U344: {1}
fst: {1}
U41: {1}
U42: {1}
U43: {1}
U44: {1}
U45: {1}
U46: {1}
U51: {1}
U52: {1}
U53: {1}
U54: {1}
U55: {1}
U56: {1}
U61: {1}
U62: {1}
isPLNatKind: empty set
U63: {1}
isPLNat: empty set
U71: {1}
U72: {1}
U73: {1}
U81: {1}
U82: {1}
U83: {1}
U91: {1}
U92: {1}
U93: {1}
tail: {1}
take: {1, 2}
0: empty set
sel: {1, 2}

(3) CSDependencyPairsProof (EQUIVALENT transformation)

Using Improved CS-DPs [LPAR08] we result in the following initial Q-CSDP problem.

(4) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel, U106', U112', U122', SND, SPLITAT, U172', U183', U193', U206', U232', U246', U256', U262', U272', HEAD, AFTERNTH, FST, U46', U56', U63', U73', U83', U93', U131', U141', U151', U161', U211', U221', NATSFROM, SEL, TAIL, TAKE} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U102', U101', U103', U104', U105', U12', U11', U111', U13', U121', U14', U171', U182', U181', U192', U191', U202', U201', U203', U204', U205', U22', U21', U23', U24', U231', U242', U241', U243', U244', U245', U252', U251', U253', U254', U255', U261', U271', U282', U281', U292', U291', U293', U294', U302', U301', U303', U304', U32', U31', U312', U311', U33', U322', U321', U323', U324', U325', U326', U327', U34', U332', U331', U333', U334', U342', U341', U343', U344', U42', U41', U43', U44', U45', U52', U51', U53', U54', U55', U62', U61', U72', U71', U82', U81', U92', U91'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat, ISNATURALKIND, ISLNATKIND, ISNATURAL, ISLNAT, ISPLNATKIND, ISPLNAT, U} are not replacing on any position.

The ordinary context-sensitive dependency pairs DPo are:

U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → ISNATURALKIND(V1)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U102'(tt, V1, V2) → ISLNATKIND(V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → ISLNATKIND(V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U104'(tt, V1, V2) → ISNATURAL(V1)
U105'(tt, V2) → U106'(isLNat(V2))
U105'(tt, V2) → ISLNAT(V2)
U11'(tt, N, XS) → U12'(isNaturalKind(N), N, XS)
U11'(tt, N, XS) → ISNATURALKIND(N)
U111'(tt, V2) → U112'(isLNatKind(V2))
U111'(tt, V2) → ISLNATKIND(V2)
U12'(tt, N, XS) → U13'(isLNat(XS), N, XS)
U12'(tt, N, XS) → ISLNAT(XS)
U121'(tt, V2) → U122'(isLNatKind(V2))
U121'(tt, V2) → ISLNATKIND(V2)
U13'(tt, N, XS) → U14'(isLNatKind(XS), N, XS)
U13'(tt, N, XS) → ISLNATKIND(XS)
U14'(tt, N, XS) → SND(splitAt(N, XS))
U14'(tt, N, XS) → SPLITAT(N, XS)
U171'(tt, V2) → U172'(isLNatKind(V2))
U171'(tt, V2) → ISLNATKIND(V2)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U181'(tt, V1) → ISLNATKIND(V1)
U182'(tt, V1) → U183'(isLNat(V1))
U182'(tt, V1) → ISLNAT(V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U191'(tt, V1) → ISNATURALKIND(V1)
U192'(tt, V1) → U193'(isNatural(V1))
U192'(tt, V1) → ISNATURAL(V1)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)
U201'(tt, V1, V2) → ISNATURALKIND(V1)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U202'(tt, V1, V2) → ISLNATKIND(V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → ISLNATKIND(V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U205'(tt, V2) → U206'(isLNat(V2))
U205'(tt, V2) → ISLNAT(V2)
U21'(tt, X, Y) → U22'(isLNatKind(X), X, Y)
U21'(tt, X, Y) → ISLNATKIND(X)
U22'(tt, X, Y) → U23'(isLNat(Y), X, Y)
U22'(tt, X, Y) → ISLNAT(Y)
U23'(tt, X, Y) → U24'(isLNatKind(Y), X)
U23'(tt, X, Y) → ISLNATKIND(Y)
U231'(tt, V2) → U232'(isLNatKind(V2))
U231'(tt, V2) → ISLNATKIND(V2)
U241'(tt, V1, V2) → U242'(isLNatKind(V1), V1, V2)
U241'(tt, V1, V2) → ISLNATKIND(V1)
U242'(tt, V1, V2) → U243'(isLNatKind(V2), V1, V2)
U242'(tt, V1, V2) → ISLNATKIND(V2)
U243'(tt, V1, V2) → U244'(isLNatKind(V2), V1, V2)
U243'(tt, V1, V2) → ISLNATKIND(V2)
U244'(tt, V1, V2) → U245'(isLNat(V1), V2)
U244'(tt, V1, V2) → ISLNAT(V1)
U245'(tt, V2) → U246'(isLNat(V2))
U245'(tt, V2) → ISLNAT(V2)
U251'(tt, V1, V2) → U252'(isNaturalKind(V1), V1, V2)
U251'(tt, V1, V2) → ISNATURALKIND(V1)
U252'(tt, V1, V2) → U253'(isLNatKind(V2), V1, V2)
U252'(tt, V1, V2) → ISLNATKIND(V2)
U253'(tt, V1, V2) → U254'(isLNatKind(V2), V1, V2)
U253'(tt, V1, V2) → ISLNATKIND(V2)
U254'(tt, V1, V2) → U255'(isNatural(V1), V2)
U254'(tt, V1, V2) → ISNATURAL(V1)
U255'(tt, V2) → U256'(isLNat(V2))
U255'(tt, V2) → ISLNAT(V2)
U261'(tt, V2) → U262'(isLNatKind(V2))
U261'(tt, V2) → ISLNATKIND(V2)
U271'(tt, V2) → U272'(isLNatKind(V2))
U271'(tt, V2) → ISLNATKIND(V2)
U281'(tt, N) → U282'(isNaturalKind(N), N)
U281'(tt, N) → ISNATURALKIND(N)
U291'(tt, N, XS) → U292'(isNaturalKind(N), N, XS)
U291'(tt, N, XS) → ISNATURALKIND(N)
U292'(tt, N, XS) → U293'(isLNat(XS), N, XS)
U292'(tt, N, XS) → ISLNAT(XS)
U293'(tt, N, XS) → U294'(isLNatKind(XS), N, XS)
U293'(tt, N, XS) → ISLNATKIND(XS)
U294'(tt, N, XS) → HEAD(afterNth(N, XS))
U294'(tt, N, XS) → AFTERNTH(N, XS)
U301'(tt, X, Y) → U302'(isLNatKind(X), Y)
U301'(tt, X, Y) → ISLNATKIND(X)
U302'(tt, Y) → U303'(isLNat(Y), Y)
U302'(tt, Y) → ISLNAT(Y)
U303'(tt, Y) → U304'(isLNatKind(Y), Y)
U303'(tt, Y) → ISLNATKIND(Y)
U31'(tt, N, XS) → U32'(isNaturalKind(N), N, XS)
U31'(tt, N, XS) → ISNATURALKIND(N)
U311'(tt, XS) → U312'(isLNatKind(XS), XS)
U311'(tt, XS) → ISLNATKIND(XS)
U32'(tt, N, XS) → U33'(isLNat(XS), N, XS)
U32'(tt, N, XS) → ISLNAT(XS)
U321'(tt, N, X, XS) → U322'(isNaturalKind(N), N, X, XS)
U321'(tt, N, X, XS) → ISNATURALKIND(N)
U322'(tt, N, X, XS) → U323'(isNatural(X), N, X, XS)
U322'(tt, N, X, XS) → ISNATURAL(X)
U323'(tt, N, X, XS) → U324'(isNaturalKind(X), N, X, XS)
U323'(tt, N, X, XS) → ISNATURALKIND(X)
U324'(tt, N, X, XS) → U325'(isLNat(XS), N, X, XS)
U324'(tt, N, X, XS) → ISLNAT(XS)
U325'(tt, N, X, XS) → U326'(isLNatKind(XS), N, X, XS)
U325'(tt, N, X, XS) → ISLNATKIND(XS)
U326'(tt, N, X, XS) → U327'(splitAt(N, XS), X)
U326'(tt, N, X, XS) → SPLITAT(N, XS)
U33'(tt, N, XS) → U34'(isLNatKind(XS), N)
U33'(tt, N, XS) → ISLNATKIND(XS)
U331'(tt, N, XS) → U332'(isNaturalKind(N), XS)
U331'(tt, N, XS) → ISNATURALKIND(N)
U332'(tt, XS) → U333'(isLNat(XS), XS)
U332'(tt, XS) → ISLNAT(XS)
U333'(tt, XS) → U334'(isLNatKind(XS), XS)
U333'(tt, XS) → ISLNATKIND(XS)
U341'(tt, N, XS) → U342'(isNaturalKind(N), N, XS)
U341'(tt, N, XS) → ISNATURALKIND(N)
U342'(tt, N, XS) → U343'(isLNat(XS), N, XS)
U342'(tt, N, XS) → ISLNAT(XS)
U343'(tt, N, XS) → U344'(isLNatKind(XS), N, XS)
U343'(tt, N, XS) → ISLNATKIND(XS)
U344'(tt, N, XS) → FST(splitAt(N, XS))
U344'(tt, N, XS) → SPLITAT(N, XS)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → ISNATURALKIND(V1)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U42'(tt, V1, V2) → ISLNATKIND(V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → ISLNATKIND(V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U44'(tt, V1, V2) → ISNATURAL(V1)
U45'(tt, V2) → U46'(isLNat(V2))
U45'(tt, V2) → ISLNAT(V2)
U51'(tt, V1, V2) → U52'(isNaturalKind(V1), V1, V2)
U51'(tt, V1, V2) → ISNATURALKIND(V1)
U52'(tt, V1, V2) → U53'(isLNatKind(V2), V1, V2)
U52'(tt, V1, V2) → ISLNATKIND(V2)
U53'(tt, V1, V2) → U54'(isLNatKind(V2), V1, V2)
U53'(tt, V1, V2) → ISLNATKIND(V2)
U54'(tt, V1, V2) → U55'(isNatural(V1), V2)
U54'(tt, V1, V2) → ISNATURAL(V1)
U55'(tt, V2) → U56'(isLNat(V2))
U55'(tt, V2) → ISLNAT(V2)
U61'(tt, V1) → U62'(isPLNatKind(V1), V1)
U61'(tt, V1) → ISPLNATKIND(V1)
U62'(tt, V1) → U63'(isPLNat(V1))
U62'(tt, V1) → ISPLNAT(V1)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U71'(tt, V1) → ISNATURALKIND(V1)
U72'(tt, V1) → U73'(isNatural(V1))
U72'(tt, V1) → ISNATURAL(V1)
U81'(tt, V1) → U82'(isPLNatKind(V1), V1)
U81'(tt, V1) → ISPLNATKIND(V1)
U82'(tt, V1) → U83'(isPLNat(V1))
U82'(tt, V1) → ISPLNAT(V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U91'(tt, V1) → ISLNATKIND(V1)
U92'(tt, V1) → U93'(isLNat(V1))
U92'(tt, V1) → ISLNAT(V1)
AFTERNTH(N, XS) → U11'(isNatural(N), N, XS)
AFTERNTH(N, XS) → ISNATURAL(N)
FST(pair(X, Y)) → U21'(isLNat(X), X, Y)
FST(pair(X, Y)) → ISLNAT(X)
HEAD(cons(N, XS)) → U31'(isNatural(N), N, XS)
HEAD(cons(N, XS)) → ISNATURAL(N)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
ISLNAT(afterNth(V1, V2)) → ISNATURALKIND(V1)
ISLNAT(cons(V1, V2)) → U51'(isNaturalKind(V1), V1, V2)
ISLNAT(cons(V1, V2)) → ISNATURALKIND(V1)
ISLNAT(fst(V1)) → U61'(isPLNatKind(V1), V1)
ISLNAT(fst(V1)) → ISPLNATKIND(V1)
ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
ISLNAT(natsFrom(V1)) → ISNATURALKIND(V1)
ISLNAT(snd(V1)) → U81'(isPLNatKind(V1), V1)
ISLNAT(snd(V1)) → ISPLNATKIND(V1)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
ISLNAT(tail(V1)) → ISLNATKIND(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
ISLNAT(take(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(afterNth(V1, V2)) → U111'(isNaturalKind(V1), V2)
ISLNATKIND(afterNth(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(cons(V1, V2)) → U121'(isNaturalKind(V1), V2)
ISLNATKIND(cons(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(fst(V1)) → U131'(isPLNatKind(V1))
ISLNATKIND(fst(V1)) → ISPLNATKIND(V1)
ISLNATKIND(natsFrom(V1)) → U141'(isNaturalKind(V1))
ISLNATKIND(natsFrom(V1)) → ISNATURALKIND(V1)
ISLNATKIND(snd(V1)) → U151'(isPLNatKind(V1))
ISLNATKIND(snd(V1)) → ISPLNATKIND(V1)
ISLNATKIND(tail(V1)) → U161'(isLNatKind(V1))
ISLNATKIND(tail(V1)) → ISLNATKIND(V1)
ISLNATKIND(take(V1, V2)) → U171'(isNaturalKind(V1), V2)
ISLNATKIND(take(V1, V2)) → ISNATURALKIND(V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
ISNATURAL(head(V1)) → ISLNATKIND(V1)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
ISNATURAL(s(V1)) → ISNATURALKIND(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
ISNATURAL(sel(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(head(V1)) → U211'(isLNatKind(V1))
ISNATURALKIND(head(V1)) → ISLNATKIND(V1)
ISNATURALKIND(s(V1)) → U221'(isNaturalKind(V1))
ISNATURALKIND(s(V1)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → U231'(isNaturalKind(V1), V2)
ISNATURALKIND(sel(V1, V2)) → ISNATURALKIND(V1)
ISPLNAT(pair(V1, V2)) → U241'(isLNatKind(V1), V1, V2)
ISPLNAT(pair(V1, V2)) → ISLNATKIND(V1)
ISPLNAT(splitAt(V1, V2)) → U251'(isNaturalKind(V1), V1, V2)
ISPLNAT(splitAt(V1, V2)) → ISNATURALKIND(V1)
ISPLNATKIND(pair(V1, V2)) → U261'(isLNatKind(V1), V2)
ISPLNATKIND(pair(V1, V2)) → ISLNATKIND(V1)
ISPLNATKIND(splitAt(V1, V2)) → U271'(isNaturalKind(V1), V2)
ISPLNATKIND(splitAt(V1, V2)) → ISNATURALKIND(V1)
NATSFROM(N) → U281'(isNatural(N), N)
NATSFROM(N) → ISNATURAL(N)
SEL(N, XS) → U291'(isNatural(N), N, XS)
SEL(N, XS) → ISNATURAL(N)
SND(pair(X, Y)) → U301'(isLNat(X), X, Y)
SND(pair(X, Y)) → ISLNAT(X)
SPLITAT(0, XS) → U311'(isLNat(XS), XS)
SPLITAT(0, XS) → ISLNAT(XS)
SPLITAT(s(N), cons(X, XS)) → U321'(isNatural(N), N, X, XS)
SPLITAT(s(N), cons(X, XS)) → ISNATURAL(N)
TAIL(cons(N, XS)) → U331'(isNatural(N), N, XS)
TAIL(cons(N, XS)) → ISNATURAL(N)
TAKE(N, XS) → U341'(isNatural(N), N, XS)
TAKE(N, XS) → ISNATURAL(N)

The collapsing dependency pairs are DPc:

U14'(tt, N, XS) → N
U14'(tt, N, XS) → XS
U24'(tt, X) → X
U282'(tt, N) → N
U294'(tt, N, XS) → N
U294'(tt, N, XS) → XS
U304'(tt, Y) → Y
U312'(tt, XS) → XS
U326'(tt, N, X, XS) → N
U326'(tt, N, X, XS) → XS
U327'(pair(YS, ZS), X) → X
U334'(tt, XS) → XS
U34'(tt, N) → N
U344'(tt, N, XS) → N
U344'(tt, N, XS) → XS


The hidden terms of R are:

natsFrom(s(x0))

Every hiding context is built from:

s on positions {1}
natsFrom on positions {1}

Hence, the new unhiding pairs DPu are :

U14'(tt, N, XS) → U(N)
U14'(tt, N, XS) → U(XS)
U24'(tt, X) → U(X)
U282'(tt, N) → U(N)
U294'(tt, N, XS) → U(N)
U294'(tt, N, XS) → U(XS)
U304'(tt, Y) → U(Y)
U312'(tt, XS) → U(XS)
U326'(tt, N, X, XS) → U(N)
U326'(tt, N, X, XS) → U(XS)
U327'(pair(YS, ZS), X) → U(X)
U334'(tt, XS) → U(XS)
U34'(tt, N) → U(N)
U344'(tt, N, XS) → U(N)
U344'(tt, N, XS) → U(XS)
U(s(x_0)) → U(x_0)
U(natsFrom(x_0)) → U(x_0)
U(natsFrom(s(x0))) → NATSFROM(s(x0))

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(5) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 4 SCCs with 149 less nodes.

(6) Complex Obligation (AND)

(7) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U111', U231', U121', U261', U171', U271'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat, ISLNATKIND, ISNATURALKIND, ISPLNATKIND} are not replacing on any position.

The TRS P consists of the following rules:

ISNATURALKIND(head(V1)) → ISLNATKIND(V1)
ISLNATKIND(afterNth(V1, V2)) → U111'(isNaturalKind(V1), V2)
U111'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(afterNth(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(s(V1)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → U231'(isNaturalKind(V1), V2)
U231'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → U121'(isNaturalKind(V1), V2)
U121'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(fst(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → U261'(isLNatKind(V1), V2)
U261'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(natsFrom(V1)) → ISNATURALKIND(V1)
ISLNATKIND(snd(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → ISLNATKIND(V1)
ISLNATKIND(tail(V1)) → ISLNATKIND(V1)
ISLNATKIND(take(V1, V2)) → U171'(isNaturalKind(V1), V2)
U171'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(take(V1, V2)) → ISNATURALKIND(V1)
ISPLNATKIND(splitAt(V1, V2)) → U271'(isNaturalKind(V1), V2)
U271'(tt, V2) → ISLNATKIND(V2)
ISPLNATKIND(splitAt(V1, V2)) → ISNATURALKIND(V1)

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(8) QCSUsableRulesProof (EQUIVALENT transformation)

The following rules are not useable [DA_EMMES] and can be deleted:

U101(tt, x0, x1) → U102(isNaturalKind(x0), x0, x1)
U102(tt, x0, x1) → U103(isLNatKind(x1), x0, x1)
U103(tt, x0, x1) → U104(isLNatKind(x1), x0, x1)
U104(tt, x0, x1) → U105(isNatural(x0), x1)
U105(tt, x0) → U106(isLNat(x0))
U106(tt) → tt
U11(tt, x0, x1) → U12(isNaturalKind(x0), x0, x1)
U12(tt, x0, x1) → U13(isLNat(x1), x0, x1)
U13(tt, x0, x1) → U14(isLNatKind(x1), x0, x1)
U14(tt, x0, x1) → snd(splitAt(x0, x1))
U181(tt, x0) → U182(isLNatKind(x0), x0)
U182(tt, x0) → U183(isLNat(x0))
U183(tt) → tt
U191(tt, x0) → U192(isNaturalKind(x0), x0)
U192(tt, x0) → U193(isNatural(x0))
U193(tt) → tt
U201(tt, x0, x1) → U202(isNaturalKind(x0), x0, x1)
U202(tt, x0, x1) → U203(isLNatKind(x1), x0, x1)
U203(tt, x0, x1) → U204(isLNatKind(x1), x0, x1)
U204(tt, x0, x1) → U205(isNatural(x0), x1)
U205(tt, x0) → U206(isLNat(x0))
U206(tt) → tt
U21(tt, x0, x1) → U22(isLNatKind(x0), x0, x1)
U22(tt, x0, x1) → U23(isLNat(x1), x0, x1)
U23(tt, x0, x1) → U24(isLNatKind(x1), x0)
U24(tt, x0) → x0
U241(tt, x0, x1) → U242(isLNatKind(x0), x0, x1)
U242(tt, x0, x1) → U243(isLNatKind(x1), x0, x1)
U243(tt, x0, x1) → U244(isLNatKind(x1), x0, x1)
U244(tt, x0, x1) → U245(isLNat(x0), x1)
U245(tt, x0) → U246(isLNat(x0))
U246(tt) → tt
U251(tt, x0, x1) → U252(isNaturalKind(x0), x0, x1)
U252(tt, x0, x1) → U253(isLNatKind(x1), x0, x1)
U253(tt, x0, x1) → U254(isLNatKind(x1), x0, x1)
U254(tt, x0, x1) → U255(isNatural(x0), x1)
U255(tt, x0) → U256(isLNat(x0))
U256(tt) → tt
U281(tt, x0) → U282(isNaturalKind(x0), x0)
U282(tt, x0) → cons(x0, natsFrom(s(x0)))
U291(tt, x0, x1) → U292(isNaturalKind(x0), x0, x1)
U292(tt, x0, x1) → U293(isLNat(x1), x0, x1)
U293(tt, x0, x1) → U294(isLNatKind(x1), x0, x1)
U294(tt, x0, x1) → head(afterNth(x0, x1))
U301(tt, x0, x1) → U302(isLNatKind(x0), x1)
U302(tt, x0) → U303(isLNat(x0), x0)
U303(tt, x0) → U304(isLNatKind(x0), x0)
U304(tt, x0) → x0
U31(tt, x0, x1) → U32(isNaturalKind(x0), x0, x1)
U311(tt, x0) → U312(isLNatKind(x0), x0)
U312(tt, x0) → pair(nil, x0)
U32(tt, x0, x1) → U33(isLNat(x1), x0, x1)
U321(tt, x0, x1, x2) → U322(isNaturalKind(x0), x0, x1, x2)
U322(tt, x0, x1, x2) → U323(isNatural(x1), x0, x1, x2)
U323(tt, x0, x1, x2) → U324(isNaturalKind(x1), x0, x1, x2)
U324(tt, x0, x1, x2) → U325(isLNat(x2), x0, x1, x2)
U325(tt, x0, x1, x2) → U326(isLNatKind(x2), x0, x1, x2)
U326(tt, x0, x1, x2) → U327(splitAt(x0, x2), x1)
U327(pair(x0, x1), x2) → pair(cons(x2, x0), x1)
U33(tt, x0, x1) → U34(isLNatKind(x1), x0)
U331(tt, x0, x1) → U332(isNaturalKind(x0), x1)
U332(tt, x0) → U333(isLNat(x0), x0)
U333(tt, x0) → U334(isLNatKind(x0), x0)
U334(tt, x0) → x0
U34(tt, x0) → x0
U341(tt, x0, x1) → U342(isNaturalKind(x0), x0, x1)
U342(tt, x0, x1) → U343(isLNat(x1), x0, x1)
U343(tt, x0, x1) → U344(isLNatKind(x1), x0, x1)
U344(tt, x0, x1) → fst(splitAt(x0, x1))
U41(tt, x0, x1) → U42(isNaturalKind(x0), x0, x1)
U42(tt, x0, x1) → U43(isLNatKind(x1), x0, x1)
U43(tt, x0, x1) → U44(isLNatKind(x1), x0, x1)
U44(tt, x0, x1) → U45(isNatural(x0), x1)
U45(tt, x0) → U46(isLNat(x0))
U46(tt) → tt
U51(tt, x0, x1) → U52(isNaturalKind(x0), x0, x1)
U52(tt, x0, x1) → U53(isLNatKind(x1), x0, x1)
U53(tt, x0, x1) → U54(isLNatKind(x1), x0, x1)
U54(tt, x0, x1) → U55(isNatural(x0), x1)
U55(tt, x0) → U56(isLNat(x0))
U56(tt) → tt
U61(tt, x0) → U62(isPLNatKind(x0), x0)
U62(tt, x0) → U63(isPLNat(x0))
U63(tt) → tt
U71(tt, x0) → U72(isNaturalKind(x0), x0)
U72(tt, x0) → U73(isNatural(x0))
U73(tt) → tt
U81(tt, x0) → U82(isPLNatKind(x0), x0)
U82(tt, x0) → U83(isPLNat(x0))
U83(tt) → tt
U91(tt, x0) → U92(isLNatKind(x0), x0)
U92(tt, x0) → U93(isLNat(x0))
U93(tt) → tt
afterNth(x0, x1) → U11(isNatural(x0), x0, x1)
fst(pair(x0, x1)) → U21(isLNat(x0), x0, x1)
head(cons(x0, x1)) → U31(isNatural(x0), x0, x1)
isLNat(nil) → tt
isLNat(afterNth(x0, x1)) → U41(isNaturalKind(x0), x0, x1)
isLNat(cons(x0, x1)) → U51(isNaturalKind(x0), x0, x1)
isLNat(fst(x0)) → U61(isPLNatKind(x0), x0)
isLNat(natsFrom(x0)) → U71(isNaturalKind(x0), x0)
isLNat(snd(x0)) → U81(isPLNatKind(x0), x0)
isLNat(tail(x0)) → U91(isLNatKind(x0), x0)
isLNat(take(x0, x1)) → U101(isNaturalKind(x0), x0, x1)
isNatural(0) → tt
isNatural(head(x0)) → U181(isLNatKind(x0), x0)
isNatural(s(x0)) → U191(isNaturalKind(x0), x0)
isNatural(sel(x0, x1)) → U201(isNaturalKind(x0), x0, x1)
isPLNat(pair(x0, x1)) → U241(isLNatKind(x0), x0, x1)
isPLNat(splitAt(x0, x1)) → U251(isNaturalKind(x0), x0, x1)
natsFrom(x0) → U281(isNatural(x0), x0)
sel(x0, x1) → U291(isNatural(x0), x0, x1)
snd(pair(x0, x1)) → U301(isLNat(x0), x0, x1)
splitAt(0, x0) → U311(isLNat(x0), x0)
splitAt(s(x0), cons(x1, x2)) → U321(isNatural(x0), x0, x1, x2)
tail(cons(x0, x1)) → U331(isNatural(x0), x0, x1)
take(x0, x1) → U341(isNatural(x0), x0, x1)

(9) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {head, U211, afterNth, s, U221, sel, U232, U122, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U112} are replacing on all positions.
For all symbols f in {U111, U231, cons, U121, U261, U271, U171, U111', U231', U121', U261', U171', U271'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isPLNatKind, ISLNATKIND, ISNATURALKIND, ISPLNATKIND} are not replacing on any position.

The TRS P consists of the following rules:

ISNATURALKIND(head(V1)) → ISLNATKIND(V1)
ISLNATKIND(afterNth(V1, V2)) → U111'(isNaturalKind(V1), V2)
U111'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(afterNth(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(s(V1)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → U231'(isNaturalKind(V1), V2)
U231'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → U121'(isNaturalKind(V1), V2)
U121'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(fst(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → U261'(isLNatKind(V1), V2)
U261'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(natsFrom(V1)) → ISNATURALKIND(V1)
ISLNATKIND(snd(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → ISLNATKIND(V1)
ISLNATKIND(tail(V1)) → ISLNATKIND(V1)
ISLNATKIND(take(V1, V2)) → U171'(isNaturalKind(V1), V2)
U171'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(take(V1, V2)) → ISNATURALKIND(V1)
ISPLNATKIND(splitAt(V1, V2)) → U271'(isNaturalKind(V1), V2)
U271'(tt, V2) → ISLNATKIND(V2)
ISPLNATKIND(splitAt(V1, V2)) → ISNATURALKIND(V1)

The TRS R consists of the following rules:

isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
U121(tt, V2) → U122(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U122(tt) → tt
U232(tt) → tt
U221(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U211(tt) → tt

Q is empty.

(10) QCSDPMuMonotonicPoloProof (EQUIVALENT transformation)

By using the following µ-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted.
Strictly oriented dependency pairs:

ISNATURALKIND(head(V1)) → ISLNATKIND(V1)
ISLNATKIND(afterNth(V1, V2)) → U111'(isNaturalKind(V1), V2)
U111'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(afterNth(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(s(V1)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → U231'(isNaturalKind(V1), V2)
U231'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → U121'(isNaturalKind(V1), V2)
U121'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(cons(V1, V2)) → ISNATURALKIND(V1)
ISNATURALKIND(sel(V1, V2)) → ISNATURALKIND(V1)
ISLNATKIND(fst(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → U261'(isLNatKind(V1), V2)
ISLNATKIND(natsFrom(V1)) → ISNATURALKIND(V1)
ISLNATKIND(snd(V1)) → ISPLNATKIND(V1)
ISPLNATKIND(pair(V1, V2)) → ISLNATKIND(V1)
ISLNATKIND(tail(V1)) → ISLNATKIND(V1)
ISLNATKIND(take(V1, V2)) → U171'(isNaturalKind(V1), V2)
U171'(tt, V2) → ISLNATKIND(V2)
ISLNATKIND(take(V1, V2)) → ISNATURALKIND(V1)
ISPLNATKIND(splitAt(V1, V2)) → U271'(isNaturalKind(V1), V2)
U271'(tt, V2) → ISLNATKIND(V2)
ISPLNATKIND(splitAt(V1, V2)) → ISNATURALKIND(V1)


Used ordering: POLO with Polynomial interpretation [POLO]:

POL(0) = 1   
POL(ISLNATKIND(x1)) = 1 + 2·x1   
POL(ISNATURALKIND(x1)) = 2 + x1   
POL(ISPLNATKIND(x1)) = 2 + 2·x1   
POL(U111(x1, x2)) = 2·x1   
POL(U111'(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(U112(x1)) = x1   
POL(U121(x1, x2)) = 2·x1   
POL(U121'(x1, x2)) = 2 + x1 + 2·x2   
POL(U122(x1)) = x1   
POL(U131(x1)) = x1   
POL(U141(x1)) = x1   
POL(U151(x1)) = x1   
POL(U161(x1)) = 2·x1   
POL(U171(x1, x2)) = x1   
POL(U171'(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(U172(x1)) = x1   
POL(U211(x1)) = x1   
POL(U221(x1)) = 2·x1   
POL(U231(x1, x2)) = x1   
POL(U231'(x1, x2)) = 2 + x1 + 2·x2   
POL(U232(x1)) = x1   
POL(U261(x1, x2)) = 2·x1   
POL(U261'(x1, x2)) = 1 + x1 + 2·x2   
POL(U262(x1)) = 2·x1   
POL(U271(x1, x2)) = 2·x1   
POL(U271'(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(U272(x1)) = x1   
POL(afterNth(x1, x2)) = 2 + 2·x1 + x2   
POL(cons(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(fst(x1)) = 2 + x1   
POL(head(x1)) = 2·x1   
POL(isLNatKind(x1)) = 0   
POL(isNaturalKind(x1)) = 0   
POL(isPLNatKind(x1)) = 0   
POL(natsFrom(x1)) = 2 + 2·x1   
POL(nil) = 1   
POL(pair(x1, x2)) = 2 + x1 + x2   
POL(s(x1)) = 2 + 2·x1   
POL(sel(x1, x2)) = 1 + 2·x1 + 2·x2   
POL(snd(x1)) = 2 + x1   
POL(splitAt(x1, x2)) = 1 + x1 + 2·x2   
POL(tail(x1)) = 2 + 2·x1   
POL(take(x1, x2)) = 2 + x1 + x2   
POL(tt) = 0   

(11) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {head, U211, afterNth, s, U221, sel, U232, U122, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U112} are replacing on all positions.
For all symbols f in {U111, U231, cons, U121, U261, U271, U171, U261'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isPLNatKind, ISLNATKIND} are not replacing on any position.

The TRS P consists of the following rules:

U261'(tt, V2) → ISLNATKIND(V2)

The TRS R consists of the following rules:

isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
U121(tt, V2) → U122(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U122(tt) → tt
U232(tt) → tt
U221(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U211(tt) → tt

Q is empty.

(12) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs.

(13) TRUE

(14) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U103', U102', U104', U105', U41', U42', U43', U44', U45', U51', U52', U53', U54', U55', U61', U62', U241', U242', U243', U244', U245', U71', U72', U181', U182', U81', U82', U251', U252', U253', U254', U255', U91', U92', U101', U191', U192', U201', U202', U203', U204', U205'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat, ISLNAT, ISPLNAT, ISNATURAL} are not replacing on any position.

The TRS P consists of the following rules:

U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
ISLNAT(cons(V1, V2)) → U51'(isNaturalKind(V1), V1, V2)
U51'(tt, V1, V2) → U52'(isNaturalKind(V1), V1, V2)
U52'(tt, V1, V2) → U53'(isLNatKind(V2), V1, V2)
U53'(tt, V1, V2) → U54'(isLNatKind(V2), V1, V2)
U54'(tt, V1, V2) → U55'(isNatural(V1), V2)
U55'(tt, V2) → ISLNAT(V2)
ISLNAT(fst(V1)) → U61'(isPLNatKind(V1), V1)
U61'(tt, V1) → U62'(isPLNatKind(V1), V1)
U62'(tt, V1) → ISPLNAT(V1)
ISPLNAT(pair(V1, V2)) → U241'(isLNatKind(V1), V1, V2)
U241'(tt, V1, V2) → U242'(isLNatKind(V1), V1, V2)
U242'(tt, V1, V2) → U243'(isLNatKind(V2), V1, V2)
U243'(tt, V1, V2) → U244'(isLNatKind(V2), V1, V2)
U244'(tt, V1, V2) → U245'(isLNat(V1), V2)
U245'(tt, V2) → ISLNAT(V2)
ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U72'(tt, V1) → ISNATURAL(V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U182'(tt, V1) → ISLNAT(V1)
ISLNAT(snd(V1)) → U81'(isPLNatKind(V1), V1)
U81'(tt, V1) → U82'(isPLNatKind(V1), V1)
U82'(tt, V1) → ISPLNAT(V1)
ISPLNAT(splitAt(V1, V2)) → U251'(isNaturalKind(V1), V1, V2)
U251'(tt, V1, V2) → U252'(isNaturalKind(V1), V1, V2)
U252'(tt, V1, V2) → U253'(isLNatKind(V2), V1, V2)
U253'(tt, V1, V2) → U254'(isLNatKind(V2), V1, V2)
U254'(tt, V1, V2) → U255'(isNatural(V1), V2)
U255'(tt, V2) → ISLNAT(V2)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U92'(tt, V1) → ISLNAT(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U254'(tt, V1, V2) → ISNATURAL(V1)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U192'(tt, V1) → ISNATURAL(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U205'(tt, V2) → ISLNAT(V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U244'(tt, V1, V2) → ISLNAT(V1)
U54'(tt, V1, V2) → ISNATURAL(V1)
U44'(tt, V1, V2) → ISNATURAL(V1)
U104'(tt, V1, V2) → ISNATURAL(V1)

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(15) QCSUsableRulesProof (EQUIVALENT transformation)

The following rules are not useable [DA_EMMES] and can be deleted:

U11(tt, x0, x1) → U12(isNaturalKind(x0), x0, x1)
U12(tt, x0, x1) → U13(isLNat(x1), x0, x1)
U13(tt, x0, x1) → U14(isLNatKind(x1), x0, x1)
U14(tt, x0, x1) → snd(splitAt(x0, x1))
U21(tt, x0, x1) → U22(isLNatKind(x0), x0, x1)
U22(tt, x0, x1) → U23(isLNat(x1), x0, x1)
U23(tt, x0, x1) → U24(isLNatKind(x1), x0)
U24(tt, x0) → x0
U281(tt, x0) → U282(isNaturalKind(x0), x0)
U282(tt, x0) → cons(x0, natsFrom(s(x0)))
U291(tt, x0, x1) → U292(isNaturalKind(x0), x0, x1)
U292(tt, x0, x1) → U293(isLNat(x1), x0, x1)
U293(tt, x0, x1) → U294(isLNatKind(x1), x0, x1)
U294(tt, x0, x1) → head(afterNth(x0, x1))
U301(tt, x0, x1) → U302(isLNatKind(x0), x1)
U302(tt, x0) → U303(isLNat(x0), x0)
U303(tt, x0) → U304(isLNatKind(x0), x0)
U304(tt, x0) → x0
U31(tt, x0, x1) → U32(isNaturalKind(x0), x0, x1)
U311(tt, x0) → U312(isLNatKind(x0), x0)
U312(tt, x0) → pair(nil, x0)
U32(tt, x0, x1) → U33(isLNat(x1), x0, x1)
U321(tt, x0, x1, x2) → U322(isNaturalKind(x0), x0, x1, x2)
U322(tt, x0, x1, x2) → U323(isNatural(x1), x0, x1, x2)
U323(tt, x0, x1, x2) → U324(isNaturalKind(x1), x0, x1, x2)
U324(tt, x0, x1, x2) → U325(isLNat(x2), x0, x1, x2)
U325(tt, x0, x1, x2) → U326(isLNatKind(x2), x0, x1, x2)
U326(tt, x0, x1, x2) → U327(splitAt(x0, x2), x1)
U327(pair(x0, x1), x2) → pair(cons(x2, x0), x1)
U33(tt, x0, x1) → U34(isLNatKind(x1), x0)
U331(tt, x0, x1) → U332(isNaturalKind(x0), x1)
U332(tt, x0) → U333(isLNat(x0), x0)
U333(tt, x0) → U334(isLNatKind(x0), x0)
U334(tt, x0) → x0
U34(tt, x0) → x0
U341(tt, x0, x1) → U342(isNaturalKind(x0), x0, x1)
U342(tt, x0, x1) → U343(isLNat(x1), x0, x1)
U343(tt, x0, x1) → U344(isLNatKind(x1), x0, x1)
U344(tt, x0, x1) → fst(splitAt(x0, x1))
afterNth(x0, x1) → U11(isNatural(x0), x0, x1)
fst(pair(x0, x1)) → U21(isLNat(x0), x0, x1)
head(cons(x0, x1)) → U31(isNatural(x0), x0, x1)
natsFrom(x0) → U281(isNatural(x0), x0)
sel(x0, x1) → U291(isNatural(x0), x0, x1)
snd(pair(x0, x1)) → U301(isLNat(x0), x0, x1)
splitAt(0, x0) → U311(isLNat(x0), x0)
splitAt(s(x0), cons(x1, x2)) → U321(isNatural(x0), x0, x1, x2)
tail(cons(x0, x1)) → U331(isNatural(x0), x0, x1)
take(x0, x1) → U341(isNatural(x0), x0, x1)

(16) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U103', U102', U104', U105', U41', U42', U43', U44', U45', U51', U52', U53', U54', U55', U61', U62', U241', U242', U243', U244', U245', U71', U72', U181', U182', U81', U82', U251', U252', U253', U254', U255', U91', U92', U101', U191', U192', U201', U202', U203', U204', U205'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT, ISPLNAT, ISNATURAL} are not replacing on any position.

The TRS P consists of the following rules:

U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
ISLNAT(cons(V1, V2)) → U51'(isNaturalKind(V1), V1, V2)
U51'(tt, V1, V2) → U52'(isNaturalKind(V1), V1, V2)
U52'(tt, V1, V2) → U53'(isLNatKind(V2), V1, V2)
U53'(tt, V1, V2) → U54'(isLNatKind(V2), V1, V2)
U54'(tt, V1, V2) → U55'(isNatural(V1), V2)
U55'(tt, V2) → ISLNAT(V2)
ISLNAT(fst(V1)) → U61'(isPLNatKind(V1), V1)
U61'(tt, V1) → U62'(isPLNatKind(V1), V1)
U62'(tt, V1) → ISPLNAT(V1)
ISPLNAT(pair(V1, V2)) → U241'(isLNatKind(V1), V1, V2)
U241'(tt, V1, V2) → U242'(isLNatKind(V1), V1, V2)
U242'(tt, V1, V2) → U243'(isLNatKind(V2), V1, V2)
U243'(tt, V1, V2) → U244'(isLNatKind(V2), V1, V2)
U244'(tt, V1, V2) → U245'(isLNat(V1), V2)
U245'(tt, V2) → ISLNAT(V2)
ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U72'(tt, V1) → ISNATURAL(V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U182'(tt, V1) → ISLNAT(V1)
ISLNAT(snd(V1)) → U81'(isPLNatKind(V1), V1)
U81'(tt, V1) → U82'(isPLNatKind(V1), V1)
U82'(tt, V1) → ISPLNAT(V1)
ISPLNAT(splitAt(V1, V2)) → U251'(isNaturalKind(V1), V1, V2)
U251'(tt, V1, V2) → U252'(isNaturalKind(V1), V1, V2)
U252'(tt, V1, V2) → U253'(isLNatKind(V2), V1, V2)
U253'(tt, V1, V2) → U254'(isLNatKind(V2), V1, V2)
U254'(tt, V1, V2) → U255'(isNatural(V1), V2)
U255'(tt, V2) → ISLNAT(V2)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U92'(tt, V1) → ISLNAT(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U254'(tt, V1, V2) → ISNATURAL(V1)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U192'(tt, V1) → ISNATURAL(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U205'(tt, V2) → ISLNAT(V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U244'(tt, V1, V2) → ISLNAT(V1)
U54'(tt, V1, V2) → ISNATURAL(V1)
U44'(tt, V1, V2) → ISNATURAL(V1)
U104'(tt, V1, V2) → ISNATURAL(V1)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(17) QCSDPMuMonotonicPoloProof (EQUIVALENT transformation)

By using the following µ-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted.
Strictly oriented dependency pairs:

U52'(tt, V1, V2) → U53'(isLNatKind(V2), V1, V2)
U55'(tt, V2) → ISLNAT(V2)
ISPLNAT(pair(V1, V2)) → U241'(isLNatKind(V1), V1, V2)
U242'(tt, V1, V2) → U243'(isLNatKind(V2), V1, V2)
U243'(tt, V1, V2) → U244'(isLNatKind(V2), V1, V2)
ISLNAT(snd(V1)) → U81'(isPLNatKind(V1), V1)
U254'(tt, V1, V2) → U255'(isNatural(V1), V2)
U255'(tt, V2) → ISLNAT(V2)
U254'(tt, V1, V2) → ISNATURAL(V1)
U54'(tt, V1, V2) → ISNATURAL(V1)


Used ordering: POLO with Polynomial interpretation [POLO]:

POL(0) = 1   
POL(ISLNAT(x1)) = x1   
POL(ISNATURAL(x1)) = x1   
POL(ISPLNAT(x1)) = 2·x1   
POL(U101(x1, x2, x3)) = 2·x1   
POL(U101'(x1, x2, x3)) = x1 + x2 + 2·x3   
POL(U102(x1, x2, x3)) = x1   
POL(U102'(x1, x2, x3)) = 2·x1 + x2 + x3   
POL(U103(x1, x2, x3)) = 2·x1   
POL(U103'(x1, x2, x3)) = 2·x1 + x2 + x3   
POL(U104(x1, x2, x3)) = 2·x1   
POL(U104'(x1, x2, x3)) = 2·x1 + x2 + x3   
POL(U105(x1, x2)) = x1   
POL(U105'(x1, x2)) = x1 + x2   
POL(U106(x1)) = x1   
POL(U111(x1, x2)) = 2·x1   
POL(U112(x1)) = 2·x1   
POL(U121(x1, x2)) = x1   
POL(U122(x1)) = x1   
POL(U131(x1)) = x1   
POL(U141(x1)) = x1   
POL(U151(x1)) = 2·x1   
POL(U161(x1)) = x1   
POL(U171(x1, x2)) = x1   
POL(U172(x1)) = x1   
POL(U181(x1, x2)) = x1   
POL(U181'(x1, x2)) = 2·x1 + x2   
POL(U182(x1, x2)) = 2·x1   
POL(U182'(x1, x2)) = 2·x1 + x2   
POL(U183(x1)) = x1   
POL(U191(x1, x2)) = x1   
POL(U191'(x1, x2)) = 2·x1 + 2·x2   
POL(U192(x1, x2)) = 2·x1   
POL(U192'(x1, x2)) = 2·x1 + x2   
POL(U193(x1)) = 2·x1   
POL(U201(x1, x2, x3)) = x1   
POL(U201'(x1, x2, x3)) = 2·x1 + 2·x2 + x3   
POL(U202(x1, x2, x3)) = x1   
POL(U202'(x1, x2, x3)) = 2·x1 + 2·x2 + x3   
POL(U203(x1, x2, x3)) = 2·x1   
POL(U203'(x1, x2, x3)) = x1 + x2 + x3   
POL(U204(x1, x2, x3)) = 2·x1   
POL(U204'(x1, x2, x3)) = 2·x1 + x2 + x3   
POL(U205(x1, x2)) = x1   
POL(U205'(x1, x2)) = 2·x1 + x2   
POL(U206(x1)) = x1   
POL(U211(x1)) = 2·x1   
POL(U221(x1)) = x1   
POL(U231(x1, x2)) = x1   
POL(U232(x1)) = 2·x1   
POL(U241(x1, x2, x3)) = 2·x1   
POL(U241'(x1, x2, x3)) = 2 + 2·x1 + x2 + 2·x3   
POL(U242(x1, x2, x3)) = x1   
POL(U242'(x1, x2, x3)) = 2 + 2·x1 + x2 + 2·x3   
POL(U243(x1, x2, x3)) = x1   
POL(U243'(x1, x2, x3)) = 1 + x1 + x2 + 2·x3   
POL(U244(x1, x2, x3)) = 2·x1   
POL(U244'(x1, x2, x3)) = 2·x1 + x2 + 2·x3   
POL(U245(x1, x2)) = 2·x1   
POL(U245'(x1, x2)) = 2·x1 + x2   
POL(U246(x1)) = 2·x1   
POL(U251(x1, x2, x3)) = 2·x1   
POL(U251'(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3   
POL(U252(x1, x2, x3)) = 2·x1   
POL(U252'(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3   
POL(U253(x1, x2, x3)) = x1   
POL(U253'(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3   
POL(U254(x1, x2, x3)) = x1   
POL(U254'(x1, x2, x3)) = 2 + 2·x1 + x2 + x3   
POL(U255(x1, x2)) = x1   
POL(U255'(x1, x2)) = 1 + 2·x1 + x2   
POL(U256(x1)) = 2·x1   
POL(U261(x1, x2)) = 2·x1   
POL(U262(x1)) = 2·x1   
POL(U271(x1, x2)) = 2·x1   
POL(U272(x1)) = x1   
POL(U41(x1, x2, x3)) = 2·x1   
POL(U41'(x1, x2, x3)) = x1 + x2 + 2·x3   
POL(U42(x1, x2, x3)) = 2·x1   
POL(U42'(x1, x2, x3)) = x1 + x2 + x3   
POL(U43(x1, x2, x3)) = x1   
POL(U43'(x1, x2, x3)) = x1 + x2 + x3   
POL(U44(x1, x2, x3)) = 2·x1   
POL(U44'(x1, x2, x3)) = x1 + x2 + x3   
POL(U45(x1, x2)) = x1   
POL(U45'(x1, x2)) = 2·x1 + x2   
POL(U46(x1)) = 2·x1   
POL(U51(x1, x2, x3)) = 2·x1   
POL(U51'(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + 2·x3   
POL(U52(x1, x2, x3)) = 2·x1   
POL(U52'(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + 2·x3   
POL(U53(x1, x2, x3)) = x1   
POL(U53'(x1, x2, x3)) = 1 + x1 + 2·x2 + 2·x3   
POL(U54(x1, x2, x3)) = x1   
POL(U54'(x1, x2, x3)) = 1 + x1 + 2·x2 + 2·x3   
POL(U55(x1, x2)) = 2·x1   
POL(U55'(x1, x2)) = 1 + x1 + x2   
POL(U56(x1)) = 2·x1   
POL(U61(x1, x2)) = 2·x1   
POL(U61'(x1, x2)) = x1 + 2·x2   
POL(U62(x1, x2)) = 2·x1   
POL(U62'(x1, x2)) = x1 + 2·x2   
POL(U63(x1)) = 2·x1   
POL(U71(x1, x2)) = 2·x1   
POL(U71'(x1, x2)) = x1 + 2·x2   
POL(U72(x1, x2)) = x1   
POL(U72'(x1, x2)) = 2·x1 + 2·x2   
POL(U73(x1)) = 2·x1   
POL(U81(x1, x2)) = 2·x1   
POL(U81'(x1, x2)) = x1 + 2·x2   
POL(U82(x1, x2)) = x1   
POL(U82'(x1, x2)) = 2·x1 + 2·x2   
POL(U83(x1)) = 2·x1   
POL(U91(x1, x2)) = 2·x1   
POL(U91'(x1, x2)) = x1 + x2   
POL(U92(x1, x2)) = x1   
POL(U92'(x1, x2)) = 2·x1 + x2   
POL(U93(x1)) = 2·x1   
POL(afterNth(x1, x2)) = 2·x1 + 2·x2   
POL(cons(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(fst(x1)) = 2·x1   
POL(head(x1)) = 2·x1   
POL(isLNat(x1)) = 0   
POL(isLNatKind(x1)) = 0   
POL(isNatural(x1)) = 0   
POL(isNaturalKind(x1)) = 0   
POL(isPLNat(x1)) = 0   
POL(isPLNatKind(x1)) = 0   
POL(natsFrom(x1)) = 2·x1   
POL(nil) = 1   
POL(pair(x1, x2)) = 2 + 2·x1 + 2·x2   
POL(s(x1)) = 2·x1   
POL(sel(x1, x2)) = 2·x1 + 2·x2   
POL(snd(x1)) = 1 + 2·x1   
POL(splitAt(x1, x2)) = 1 + x1 + x2   
POL(tail(x1)) = 2·x1   
POL(take(x1, x2)) = 2·x1 + 2·x2   
POL(tt) = 0   

(18) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U103', U102', U104', U105', U41', U42', U43', U44', U45', U51', U52', U54', U53', U55', U61', U62', U242', U241', U245', U244', U71', U72', U181', U182', U82', U81', U251', U252', U253', U254', U91', U92', U101', U191', U192', U201', U202', U203', U204', U205'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT, ISPLNAT, ISNATURAL} are not replacing on any position.

The TRS P consists of the following rules:

U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
ISLNAT(cons(V1, V2)) → U51'(isNaturalKind(V1), V1, V2)
U51'(tt, V1, V2) → U52'(isNaturalKind(V1), V1, V2)
U53'(tt, V1, V2) → U54'(isLNatKind(V2), V1, V2)
U54'(tt, V1, V2) → U55'(isNatural(V1), V2)
ISLNAT(fst(V1)) → U61'(isPLNatKind(V1), V1)
U61'(tt, V1) → U62'(isPLNatKind(V1), V1)
U62'(tt, V1) → ISPLNAT(V1)
U241'(tt, V1, V2) → U242'(isLNatKind(V1), V1, V2)
U244'(tt, V1, V2) → U245'(isLNat(V1), V2)
U245'(tt, V2) → ISLNAT(V2)
ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U72'(tt, V1) → ISNATURAL(V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U182'(tt, V1) → ISLNAT(V1)
U81'(tt, V1) → U82'(isPLNatKind(V1), V1)
U82'(tt, V1) → ISPLNAT(V1)
ISPLNAT(splitAt(V1, V2)) → U251'(isNaturalKind(V1), V1, V2)
U251'(tt, V1, V2) → U252'(isNaturalKind(V1), V1, V2)
U252'(tt, V1, V2) → U253'(isLNatKind(V2), V1, V2)
U253'(tt, V1, V2) → U254'(isLNatKind(V2), V1, V2)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U92'(tt, V1) → ISLNAT(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U192'(tt, V1) → ISNATURAL(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U205'(tt, V2) → ISLNAT(V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U244'(tt, V1, V2) → ISLNAT(V1)
U44'(tt, V1, V2) → ISNATURAL(V1)
U104'(tt, V1, V2) → ISNATURAL(V1)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(19) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 1 SCC with 16 less nodes.

(20) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U104', U103', U105', U41', U42', U43', U44', U45', U71', U72', U181', U182', U91', U92', U101', U102', U191', U192', U201', U202', U203', U204', U205'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT, ISNATURAL} are not replacing on any position.

The TRS P consists of the following rules:

U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U72'(tt, V1) → ISNATURAL(V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U182'(tt, V1) → ISLNAT(V1)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U92'(tt, V1) → ISLNAT(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U192'(tt, V1) → ISNATURAL(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U205'(tt, V2) → ISLNAT(V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U44'(tt, V1, V2) → ISNATURAL(V1)
U104'(tt, V1, V2) → ISNATURAL(V1)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(21) QCSDPMuMonotonicPoloProof (EQUIVALENT transformation)

By using the following µ-monotonic polynomial ordering [POLO], at least one Dependency Pair or term rewrite system rule of this Q-CSDP problem can be strictly oriented and thus deleted.
Strictly oriented dependency pairs:

ISLNAT(natsFrom(V1)) → U71'(isNaturalKind(V1), V1)
ISNATURAL(head(V1)) → U181'(isLNatKind(V1), V1)
U182'(tt, V1) → ISLNAT(V1)
ISLNAT(tail(V1)) → U91'(isLNatKind(V1), V1)
U191'(tt, V1) → U192'(isNaturalKind(V1), V1)
U201'(tt, V1, V2) → U202'(isNaturalKind(V1), V1, V2)


Used ordering: POLO with Polynomial interpretation [POLO]:

POL(0) = 2   
POL(ISLNAT(x1)) = x1   
POL(ISNATURAL(x1)) = 2·x1   
POL(U101(x1, x2, x3)) = 2·x1   
POL(U101'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U102(x1, x2, x3)) = 2·x1   
POL(U102'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U103(x1, x2, x3)) = x1   
POL(U103'(x1, x2, x3)) = 2·x1 + 2·x2 + x3   
POL(U104(x1, x2, x3)) = 2·x1   
POL(U104'(x1, x2, x3)) = 2·x1 + 2·x2 + x3   
POL(U105(x1, x2)) = 2·x1   
POL(U105'(x1, x2)) = x1 + x2   
POL(U106(x1)) = x1   
POL(U111(x1, x2)) = 2·x1   
POL(U112(x1)) = 2·x1   
POL(U121(x1, x2)) = 2·x1   
POL(U122(x1)) = x1   
POL(U131(x1)) = 2·x1   
POL(U141(x1)) = 2·x1   
POL(U151(x1)) = 2·x1   
POL(U161(x1)) = 2·x1   
POL(U171(x1, x2)) = 2·x1   
POL(U172(x1)) = x1   
POL(U181(x1, x2)) = 2·x1   
POL(U181'(x1, x2)) = 2 + x1 + x2   
POL(U182(x1, x2)) = x1   
POL(U182'(x1, x2)) = 2 + 2·x1 + x2   
POL(U183(x1)) = x1   
POL(U191(x1, x2)) = 2·x1   
POL(U191'(x1, x2)) = 2 + x1 + 2·x2   
POL(U192(x1, x2)) = 2·x1   
POL(U192'(x1, x2)) = x1 + 2·x2   
POL(U193(x1)) = 2·x1   
POL(U201(x1, x2, x3)) = x1   
POL(U201'(x1, x2, x3)) = 2 + x1 + 2·x2 + 2·x3   
POL(U202(x1, x2, x3)) = x1   
POL(U202'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U203(x1, x2, x3)) = 2·x1   
POL(U203'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U204(x1, x2, x3)) = 2·x1   
POL(U204'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U205(x1, x2)) = x1   
POL(U205'(x1, x2)) = 2·x1 + x2   
POL(U206(x1)) = 2·x1   
POL(U211(x1)) = x1   
POL(U221(x1)) = x1   
POL(U231(x1, x2)) = x1   
POL(U232(x1)) = 2·x1   
POL(U241(x1, x2, x3)) = x1   
POL(U242(x1, x2, x3)) = 2·x1   
POL(U243(x1, x2, x3)) = x1   
POL(U244(x1, x2, x3)) = 2·x1   
POL(U245(x1, x2)) = x1   
POL(U246(x1)) = x1   
POL(U251(x1, x2, x3)) = x1   
POL(U252(x1, x2, x3)) = 2·x1   
POL(U253(x1, x2, x3)) = 2·x1   
POL(U254(x1, x2, x3)) = x1   
POL(U255(x1, x2)) = 2·x1   
POL(U256(x1)) = 2·x1   
POL(U261(x1, x2)) = 2·x1   
POL(U262(x1)) = x1   
POL(U271(x1, x2)) = x1   
POL(U272(x1)) = x1   
POL(U41(x1, x2, x3)) = 2·x1   
POL(U41'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U42(x1, x2, x3)) = 2·x1   
POL(U42'(x1, x2, x3)) = x1 + 2·x2 + 2·x3   
POL(U43(x1, x2, x3)) = 2·x1   
POL(U43'(x1, x2, x3)) = 2·x1 + 2·x2 + 2·x3   
POL(U44(x1, x2, x3)) = x1   
POL(U44'(x1, x2, x3)) = x1 + 2·x2 + 2·x3   
POL(U45(x1, x2)) = 2·x1   
POL(U45'(x1, x2)) = x1 + 2·x2   
POL(U46(x1)) = x1   
POL(U51(x1, x2, x3)) = x1   
POL(U52(x1, x2, x3)) = x1   
POL(U53(x1, x2, x3)) = x1   
POL(U54(x1, x2, x3)) = x1   
POL(U55(x1, x2)) = 2·x1   
POL(U56(x1)) = x1   
POL(U61(x1, x2)) = x1   
POL(U62(x1, x2)) = x1   
POL(U63(x1)) = x1   
POL(U71(x1, x2)) = 2·x1   
POL(U71'(x1, x2)) = x1 + 2·x2   
POL(U72(x1, x2)) = x1   
POL(U72'(x1, x2)) = 2·x1 + 2·x2   
POL(U73(x1)) = x1   
POL(U81(x1, x2)) = 2·x1   
POL(U82(x1, x2)) = 2·x1   
POL(U83(x1)) = x1   
POL(U91(x1, x2)) = 2·x1   
POL(U91'(x1, x2)) = x1 + x2   
POL(U92(x1, x2)) = x1   
POL(U92'(x1, x2)) = 2·x1 + x2   
POL(U93(x1)) = 2·x1   
POL(afterNth(x1, x2)) = 2·x1 + 2·x2   
POL(cons(x1, x2)) = x1 + x2   
POL(fst(x1)) = 1 + 2·x1   
POL(head(x1)) = 2 + 2·x1   
POL(isLNat(x1)) = 0   
POL(isLNatKind(x1)) = 0   
POL(isNatural(x1)) = 0   
POL(isNaturalKind(x1)) = 0   
POL(isPLNat(x1)) = 0   
POL(isPLNatKind(x1)) = 0   
POL(natsFrom(x1)) = 2 + 2·x1   
POL(nil) = 2   
POL(pair(x1, x2)) = 2 + 2·x1 + x2   
POL(s(x1)) = 1 + x1   
POL(sel(x1, x2)) = 1 + 2·x1 + x2   
POL(snd(x1)) = x1   
POL(splitAt(x1, x2)) = 2·x1 + x2   
POL(tail(x1)) = 2 + 2·x1   
POL(take(x1, x2)) = 2·x1 + 2·x2   
POL(tt) = 0   

(22) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U104', U103', U105', U41', U42', U43', U44', U45', U72', U71', U182', U181', U92', U91', U101', U102', U191', U192', U201', U203', U202', U204', U205'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT, ISNATURAL} are not replacing on any position.

The TRS P consists of the following rules:

U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
U71'(tt, V1) → U72'(isNaturalKind(V1), V1)
U72'(tt, V1) → ISNATURAL(V1)
U181'(tt, V1) → U182'(isLNatKind(V1), V1)
U91'(tt, V1) → U92'(isLNatKind(V1), V1)
U92'(tt, V1) → ISLNAT(V1)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
ISNATURAL(s(V1)) → U191'(isNaturalKind(V1), V1)
U192'(tt, V1) → ISNATURAL(V1)
ISNATURAL(sel(V1, V2)) → U201'(isNaturalKind(V1), V1, V2)
U202'(tt, V1, V2) → U203'(isLNatKind(V2), V1, V2)
U203'(tt, V1, V2) → U204'(isLNatKind(V2), V1, V2)
U204'(tt, V1, V2) → U205'(isNatural(V1), V2)
U205'(tt, V2) → ISLNAT(V2)
U204'(tt, V1, V2) → ISNATURAL(V1)
U44'(tt, V1, V2) → ISNATURAL(V1)
U104'(tt, V1, V2) → ISNATURAL(V1)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(23) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 1 SCC with 14 less nodes.

(24) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U105', U104', U41', U42', U43', U44', U45', U101', U102', U103'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT} are not replacing on any position.

The TRS P consists of the following rules:

U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(25) QCSDPSubtermProof (EQUIVALENT transformation)

We use the subterm processor [DA_EMMES].


The following pairs can be oriented strictly and are deleted.


ISLNAT(afterNth(V1, V2)) → U41'(isNaturalKind(V1), V1, V2)
ISLNAT(take(V1, V2)) → U101'(isNaturalKind(V1), V1, V2)
The remaining pairs can at least be oriented weakly.

U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)
Used ordering: Combined order from the following AFS and order.
U105'(x1, x2)  =  x2
U104'(x1, x2, x3)  =  x3
ISLNAT(x1)  =  x1
U41'(x1, x2, x3)  =  x3
U42'(x1, x2, x3)  =  x3
U43'(x1, x2, x3)  =  x3
U44'(x1, x2, x3)  =  x3
U45'(x1, x2)  =  x2
U101'(x1, x2, x3)  =  x3
U102'(x1, x2, x3)  =  x3
U103'(x1, x2, x3)  =  x3

Subterm Order

(26) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {afterNth, head, U211, s, U221, sel, U232, fst, U131, pair, natsFrom, U141, snd, U151, splitAt, U272, tail, U161, take, U172, U262, U122, U112, U183, U193, U206, U56, U63, U73, U83, U256, U93, U106, U246, U46} are replacing on all positions.
For all symbols f in {U111, cons, U121, U231, U261, U271, U171, U181, U182, U41, U42, U43, U44, U45, U191, U192, U201, U202, U203, U204, U205, U51, U52, U53, U54, U55, U61, U62, U241, U242, U243, U244, U245, U71, U72, U81, U82, U251, U252, U253, U254, U255, U91, U92, U101, U102, U103, U104, U105, U105', U104', U42', U41', U43', U44', U45', U102', U101', U103'} we have µ(f) = {1}.
The symbols in {isLNatKind, isNaturalKind, isPLNatKind, isNatural, isLNat, isPLNat, ISLNAT} are not replacing on any position.

The TRS P consists of the following rules:

U104'(tt, V1, V2) → U105'(isNatural(V1), V2)
U105'(tt, V2) → ISLNAT(V2)
U41'(tt, V1, V2) → U42'(isNaturalKind(V1), V1, V2)
U42'(tt, V1, V2) → U43'(isLNatKind(V2), V1, V2)
U43'(tt, V1, V2) → U44'(isLNatKind(V2), V1, V2)
U44'(tt, V1, V2) → U45'(isNatural(V1), V2)
U45'(tt, V2) → ISLNAT(V2)
U101'(tt, V1, V2) → U102'(isNaturalKind(V1), V1, V2)
U102'(tt, V1, V2) → U103'(isLNatKind(V2), V1, V2)
U103'(tt, V1, V2) → U104'(isLNatKind(V2), V1, V2)

The TRS R consists of the following rules:

isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
U231(tt, V2) → U232(isLNatKind(V2))
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
U141(tt) → tt
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
U271(tt, V2) → U272(isLNatKind(V2))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U161(tt) → tt
U272(tt) → tt
U151(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U131(tt) → tt
U232(tt) → tt
U221(tt) → tt
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U211(tt) → tt
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U93(tt) → tt
U256(tt) → tt
U83(tt) → tt
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U63(tt) → tt
U56(tt) → tt
U206(tt) → tt
U193(tt) → tt
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U183(tt) → tt

Q is empty.

(27) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs with 10 less nodes.

(28) TRUE

(29) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel, NATSFROM} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U281', U282'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat, U} are not replacing on any position.

The TRS P consists of the following rules:

NATSFROM(N) → U281'(isNatural(N), N)
U281'(tt, N) → U282'(isNaturalKind(N), N)
U282'(tt, N) → U(N)
U(s(x_0)) → U(x_0)
U(natsFrom(x_0)) → U(x_0)
U(natsFrom(s(x0))) → NATSFROM(s(x0))

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(30) QCSDPSubtermProof (EQUIVALENT transformation)

We use the subterm processor [DA_EMMES].


The following pairs can be oriented strictly and are deleted.


U(s(x_0)) → U(x_0)
U(natsFrom(x_0)) → U(x_0)
U(natsFrom(s(x0))) → NATSFROM(s(x0))
The remaining pairs can at least be oriented weakly.

NATSFROM(N) → U281'(isNatural(N), N)
U281'(tt, N) → U282'(isNaturalKind(N), N)
U282'(tt, N) → U(N)
Used ordering: Combined order from the following AFS and order.
U281'(x1, x2)  =  x2
NATSFROM(x1)  =  x1
U282'(x1, x2)  =  x2
U(x1)  =  x1

Subterm Order

(31) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel, NATSFROM} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U281', U282'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat, U} are not replacing on any position.

The TRS P consists of the following rules:

NATSFROM(N) → U281'(isNatural(N), N)
U281'(tt, N) → U282'(isNaturalKind(N), N)
U282'(tt, N) → U(N)

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(32) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs with 3 less nodes.

(33) TRUE

(34) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel, SPLITAT} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U325', U324', U326', U321', U322', U323'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat} are not replacing on any position.

The TRS P consists of the following rules:

U324'(tt, N, X, XS) → U325'(isLNat(XS), N, X, XS)
U325'(tt, N, X, XS) → U326'(isLNatKind(XS), N, X, XS)
U326'(tt, N, X, XS) → SPLITAT(N, XS)
SPLITAT(s(N), cons(X, XS)) → U321'(isNatural(N), N, X, XS)
U321'(tt, N, X, XS) → U322'(isNaturalKind(N), N, X, XS)
U322'(tt, N, X, XS) → U323'(isNatural(X), N, X, XS)
U323'(tt, N, X, XS) → U324'(isNaturalKind(X), N, X, XS)

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(35) QCSDPSubtermProof (EQUIVALENT transformation)

We use the subterm processor [DA_EMMES].


The following pairs can be oriented strictly and are deleted.


SPLITAT(s(N), cons(X, XS)) → U321'(isNatural(N), N, X, XS)
The remaining pairs can at least be oriented weakly.

U324'(tt, N, X, XS) → U325'(isLNat(XS), N, X, XS)
U325'(tt, N, X, XS) → U326'(isLNatKind(XS), N, X, XS)
U326'(tt, N, X, XS) → SPLITAT(N, XS)
U321'(tt, N, X, XS) → U322'(isNaturalKind(N), N, X, XS)
U322'(tt, N, X, XS) → U323'(isNatural(X), N, X, XS)
U323'(tt, N, X, XS) → U324'(isNaturalKind(X), N, X, XS)
Used ordering: Combined order from the following AFS and order.
U325'(x1, x2, x3, x4)  =  x2
U324'(x1, x2, x3, x4)  =  x2
U326'(x1, x2, x3, x4)  =  x2
SPLITAT(x1, x2)  =  x1
U321'(x1, x2, x3, x4)  =  x2
U322'(x1, x2, x3, x4)  =  x2
U323'(x1, x2, x3, x4)  =  x2

Subterm Order

(36) Obligation:

Q-restricted context-sensitive dependency pair problem:
The symbols in {U106, U112, U122, U131, snd, splitAt, U141, U151, U161, U172, U183, U193, U206, U211, U221, U232, U246, U256, U262, U272, natsFrom, s, head, afterNth, pair, fst, U46, U56, U63, U73, U83, U93, tail, take, sel, SPLITAT} are replacing on all positions.
For all symbols f in {U101, U102, U103, U104, U105, U11, U12, U111, U13, U121, U14, U171, U181, U182, U191, U192, U201, U202, U203, U204, U205, U21, U22, U23, U24, U231, U241, U242, U243, U244, U245, U251, U252, U253, U254, U255, U261, U271, U281, U282, cons, U291, U292, U293, U294, U301, U302, U303, U304, U31, U32, U311, U312, U33, U321, U322, U323, U324, U325, U326, U327, U34, U331, U332, U333, U334, U341, U342, U343, U344, U41, U42, U43, U44, U45, U51, U52, U53, U54, U55, U61, U62, U71, U72, U81, U82, U91, U92, U325', U324', U326', U322', U321', U323'} we have µ(f) = {1}.
The symbols in {isNaturalKind, isLNatKind, isNatural, isLNat, isPLNatKind, isPLNat} are not replacing on any position.

The TRS P consists of the following rules:

U324'(tt, N, X, XS) → U325'(isLNat(XS), N, X, XS)
U325'(tt, N, X, XS) → U326'(isLNatKind(XS), N, X, XS)
U326'(tt, N, X, XS) → SPLITAT(N, XS)
U321'(tt, N, X, XS) → U322'(isNaturalKind(N), N, X, XS)
U322'(tt, N, X, XS) → U323'(isNatural(X), N, X, XS)
U323'(tt, N, X, XS) → U324'(isNaturalKind(X), N, X, XS)

The TRS R consists of the following rules:

U101(tt, V1, V2) → U102(isNaturalKind(V1), V1, V2)
U102(tt, V1, V2) → U103(isLNatKind(V2), V1, V2)
U103(tt, V1, V2) → U104(isLNatKind(V2), V1, V2)
U104(tt, V1, V2) → U105(isNatural(V1), V2)
U105(tt, V2) → U106(isLNat(V2))
U106(tt) → tt
U11(tt, N, XS) → U12(isNaturalKind(N), N, XS)
U111(tt, V2) → U112(isLNatKind(V2))
U112(tt) → tt
U12(tt, N, XS) → U13(isLNat(XS), N, XS)
U121(tt, V2) → U122(isLNatKind(V2))
U122(tt) → tt
U13(tt, N, XS) → U14(isLNatKind(XS), N, XS)
U131(tt) → tt
U14(tt, N, XS) → snd(splitAt(N, XS))
U141(tt) → tt
U151(tt) → tt
U161(tt) → tt
U171(tt, V2) → U172(isLNatKind(V2))
U172(tt) → tt
U181(tt, V1) → U182(isLNatKind(V1), V1)
U182(tt, V1) → U183(isLNat(V1))
U183(tt) → tt
U191(tt, V1) → U192(isNaturalKind(V1), V1)
U192(tt, V1) → U193(isNatural(V1))
U193(tt) → tt
U201(tt, V1, V2) → U202(isNaturalKind(V1), V1, V2)
U202(tt, V1, V2) → U203(isLNatKind(V2), V1, V2)
U203(tt, V1, V2) → U204(isLNatKind(V2), V1, V2)
U204(tt, V1, V2) → U205(isNatural(V1), V2)
U205(tt, V2) → U206(isLNat(V2))
U206(tt) → tt
U21(tt, X, Y) → U22(isLNatKind(X), X, Y)
U211(tt) → tt
U22(tt, X, Y) → U23(isLNat(Y), X, Y)
U221(tt) → tt
U23(tt, X, Y) → U24(isLNatKind(Y), X)
U231(tt, V2) → U232(isLNatKind(V2))
U232(tt) → tt
U24(tt, X) → X
U241(tt, V1, V2) → U242(isLNatKind(V1), V1, V2)
U242(tt, V1, V2) → U243(isLNatKind(V2), V1, V2)
U243(tt, V1, V2) → U244(isLNatKind(V2), V1, V2)
U244(tt, V1, V2) → U245(isLNat(V1), V2)
U245(tt, V2) → U246(isLNat(V2))
U246(tt) → tt
U251(tt, V1, V2) → U252(isNaturalKind(V1), V1, V2)
U252(tt, V1, V2) → U253(isLNatKind(V2), V1, V2)
U253(tt, V1, V2) → U254(isLNatKind(V2), V1, V2)
U254(tt, V1, V2) → U255(isNatural(V1), V2)
U255(tt, V2) → U256(isLNat(V2))
U256(tt) → tt
U261(tt, V2) → U262(isLNatKind(V2))
U262(tt) → tt
U271(tt, V2) → U272(isLNatKind(V2))
U272(tt) → tt
U281(tt, N) → U282(isNaturalKind(N), N)
U282(tt, N) → cons(N, natsFrom(s(N)))
U291(tt, N, XS) → U292(isNaturalKind(N), N, XS)
U292(tt, N, XS) → U293(isLNat(XS), N, XS)
U293(tt, N, XS) → U294(isLNatKind(XS), N, XS)
U294(tt, N, XS) → head(afterNth(N, XS))
U301(tt, X, Y) → U302(isLNatKind(X), Y)
U302(tt, Y) → U303(isLNat(Y), Y)
U303(tt, Y) → U304(isLNatKind(Y), Y)
U304(tt, Y) → Y
U31(tt, N, XS) → U32(isNaturalKind(N), N, XS)
U311(tt, XS) → U312(isLNatKind(XS), XS)
U312(tt, XS) → pair(nil, XS)
U32(tt, N, XS) → U33(isLNat(XS), N, XS)
U321(tt, N, X, XS) → U322(isNaturalKind(N), N, X, XS)
U322(tt, N, X, XS) → U323(isNatural(X), N, X, XS)
U323(tt, N, X, XS) → U324(isNaturalKind(X), N, X, XS)
U324(tt, N, X, XS) → U325(isLNat(XS), N, X, XS)
U325(tt, N, X, XS) → U326(isLNatKind(XS), N, X, XS)
U326(tt, N, X, XS) → U327(splitAt(N, XS), X)
U327(pair(YS, ZS), X) → pair(cons(X, YS), ZS)
U33(tt, N, XS) → U34(isLNatKind(XS), N)
U331(tt, N, XS) → U332(isNaturalKind(N), XS)
U332(tt, XS) → U333(isLNat(XS), XS)
U333(tt, XS) → U334(isLNatKind(XS), XS)
U334(tt, XS) → XS
U34(tt, N) → N
U341(tt, N, XS) → U342(isNaturalKind(N), N, XS)
U342(tt, N, XS) → U343(isLNat(XS), N, XS)
U343(tt, N, XS) → U344(isLNatKind(XS), N, XS)
U344(tt, N, XS) → fst(splitAt(N, XS))
U41(tt, V1, V2) → U42(isNaturalKind(V1), V1, V2)
U42(tt, V1, V2) → U43(isLNatKind(V2), V1, V2)
U43(tt, V1, V2) → U44(isLNatKind(V2), V1, V2)
U44(tt, V1, V2) → U45(isNatural(V1), V2)
U45(tt, V2) → U46(isLNat(V2))
U46(tt) → tt
U51(tt, V1, V2) → U52(isNaturalKind(V1), V1, V2)
U52(tt, V1, V2) → U53(isLNatKind(V2), V1, V2)
U53(tt, V1, V2) → U54(isLNatKind(V2), V1, V2)
U54(tt, V1, V2) → U55(isNatural(V1), V2)
U55(tt, V2) → U56(isLNat(V2))
U56(tt) → tt
U61(tt, V1) → U62(isPLNatKind(V1), V1)
U62(tt, V1) → U63(isPLNat(V1))
U63(tt) → tt
U71(tt, V1) → U72(isNaturalKind(V1), V1)
U72(tt, V1) → U73(isNatural(V1))
U73(tt) → tt
U81(tt, V1) → U82(isPLNatKind(V1), V1)
U82(tt, V1) → U83(isPLNat(V1))
U83(tt) → tt
U91(tt, V1) → U92(isLNatKind(V1), V1)
U92(tt, V1) → U93(isLNat(V1))
U93(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, XS)
isLNat(nil) → tt
isLNat(afterNth(V1, V2)) → U41(isNaturalKind(V1), V1, V2)
isLNat(cons(V1, V2)) → U51(isNaturalKind(V1), V1, V2)
isLNat(fst(V1)) → U61(isPLNatKind(V1), V1)
isLNat(natsFrom(V1)) → U71(isNaturalKind(V1), V1)
isLNat(snd(V1)) → U81(isPLNatKind(V1), V1)
isLNat(tail(V1)) → U91(isLNatKind(V1), V1)
isLNat(take(V1, V2)) → U101(isNaturalKind(V1), V1, V2)
isLNatKind(nil) → tt
isLNatKind(afterNth(V1, V2)) → U111(isNaturalKind(V1), V2)
isLNatKind(cons(V1, V2)) → U121(isNaturalKind(V1), V2)
isLNatKind(fst(V1)) → U131(isPLNatKind(V1))
isLNatKind(natsFrom(V1)) → U141(isNaturalKind(V1))
isLNatKind(snd(V1)) → U151(isPLNatKind(V1))
isLNatKind(tail(V1)) → U161(isLNatKind(V1))
isLNatKind(take(V1, V2)) → U171(isNaturalKind(V1), V2)
isNatural(0) → tt
isNatural(head(V1)) → U181(isLNatKind(V1), V1)
isNatural(s(V1)) → U191(isNaturalKind(V1), V1)
isNatural(sel(V1, V2)) → U201(isNaturalKind(V1), V1, V2)
isNaturalKind(0) → tt
isNaturalKind(head(V1)) → U211(isLNatKind(V1))
isNaturalKind(s(V1)) → U221(isNaturalKind(V1))
isNaturalKind(sel(V1, V2)) → U231(isNaturalKind(V1), V2)
isPLNat(pair(V1, V2)) → U241(isLNatKind(V1), V1, V2)
isPLNat(splitAt(V1, V2)) → U251(isNaturalKind(V1), V1, V2)
isPLNatKind(pair(V1, V2)) → U261(isLNatKind(V1), V2)
isPLNatKind(splitAt(V1, V2)) → U271(isNaturalKind(V1), V2)
natsFrom(N) → U281(isNatural(N), N)
sel(N, XS) → U291(isNatural(N), N, XS)
snd(pair(X, Y)) → U301(isLNat(X), X, Y)
splitAt(0, XS) → U311(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U321(isNatural(N), N, X, XS)
tail(cons(N, XS)) → U331(isNatural(N), N, XS)
take(N, XS) → U341(isNatural(N), N, XS)

Q is empty.

(37) QCSDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 0 SCCs with 6 less nodes.

(38) TRUE