(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

active(U11(tt, N, X, XS)) → mark(U12(splitAt(N, XS), X))
active(U12(pair(YS, ZS), X)) → mark(pair(cons(X, YS), ZS))
active(afterNth(N, XS)) → mark(snd(splitAt(N, XS)))
active(and(tt, X)) → mark(X)
active(fst(pair(X, Y))) → mark(X)
active(head(cons(N, XS))) → mark(N)
active(natsFrom(N)) → mark(cons(N, natsFrom(s(N))))
active(sel(N, XS)) → mark(head(afterNth(N, XS)))
active(snd(pair(X, Y))) → mark(Y)
active(splitAt(0, XS)) → mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS))) → mark(U11(tt, N, X, XS))
active(tail(cons(N, XS))) → mark(XS)
active(take(N, XS)) → mark(fst(splitAt(N, XS)))
mark(U11(X1, X2, X3, X4)) → active(U11(mark(X1), X2, X3, X4))
mark(tt) → active(tt)
mark(U12(X1, X2)) → active(U12(mark(X1), X2))
mark(splitAt(X1, X2)) → active(splitAt(mark(X1), mark(X2)))
mark(pair(X1, X2)) → active(pair(mark(X1), mark(X2)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(afterNth(X1, X2)) → active(afterNth(mark(X1), mark(X2)))
mark(snd(X)) → active(snd(mark(X)))
mark(and(X1, X2)) → active(and(mark(X1), X2))
mark(fst(X)) → active(fst(mark(X)))
mark(head(X)) → active(head(mark(X)))
mark(natsFrom(X)) → active(natsFrom(mark(X)))
mark(s(X)) → active(s(mark(X)))
mark(sel(X1, X2)) → active(sel(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(tail(X)) → active(tail(mark(X)))
mark(take(X1, X2)) → active(take(mark(X1), mark(X2)))
U11(mark(X1), X2, X3, X4) → U11(X1, X2, X3, X4)
U11(X1, mark(X2), X3, X4) → U11(X1, X2, X3, X4)
U11(X1, X2, mark(X3), X4) → U11(X1, X2, X3, X4)
U11(X1, X2, X3, mark(X4)) → U11(X1, X2, X3, X4)
U11(active(X1), X2, X3, X4) → U11(X1, X2, X3, X4)
U11(X1, active(X2), X3, X4) → U11(X1, X2, X3, X4)
U11(X1, X2, active(X3), X4) → U11(X1, X2, X3, X4)
U11(X1, X2, X3, active(X4)) → U11(X1, X2, X3, X4)
U12(mark(X1), X2) → U12(X1, X2)
U12(X1, mark(X2)) → U12(X1, X2)
U12(active(X1), X2) → U12(X1, X2)
U12(X1, active(X2)) → U12(X1, X2)
splitAt(mark(X1), X2) → splitAt(X1, X2)
splitAt(X1, mark(X2)) → splitAt(X1, X2)
splitAt(active(X1), X2) → splitAt(X1, X2)
splitAt(X1, active(X2)) → splitAt(X1, X2)
pair(mark(X1), X2) → pair(X1, X2)
pair(X1, mark(X2)) → pair(X1, X2)
pair(active(X1), X2) → pair(X1, X2)
pair(X1, active(X2)) → pair(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
afterNth(mark(X1), X2) → afterNth(X1, X2)
afterNth(X1, mark(X2)) → afterNth(X1, X2)
afterNth(active(X1), X2) → afterNth(X1, X2)
afterNth(X1, active(X2)) → afterNth(X1, X2)
snd(mark(X)) → snd(X)
snd(active(X)) → snd(X)
and(mark(X1), X2) → and(X1, X2)
and(X1, mark(X2)) → and(X1, X2)
and(active(X1), X2) → and(X1, X2)
and(X1, active(X2)) → and(X1, X2)
fst(mark(X)) → fst(X)
fst(active(X)) → fst(X)
head(mark(X)) → head(X)
head(active(X)) → head(X)
natsFrom(mark(X)) → natsFrom(X)
natsFrom(active(X)) → natsFrom(X)
s(mark(X)) → s(X)
s(active(X)) → s(X)
sel(mark(X1), X2) → sel(X1, X2)
sel(X1, mark(X2)) → sel(X1, X2)
sel(active(X1), X2) → sel(X1, X2)
sel(X1, active(X2)) → sel(X1, X2)
tail(mark(X)) → tail(X)
tail(active(X)) → tail(X)
take(mark(X1), X2) → take(X1, X2)
take(X1, mark(X2)) → take(X1, X2)
take(active(X1), X2) → take(X1, X2)
take(X1, active(X2)) → take(X1, X2)

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(U11(tt, z0, z1, z2)) → mark(U12(splitAt(z0, z2), z1))
active(U12(pair(z0, z1), z2)) → mark(pair(cons(z2, z0), z1))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(and(tt, z0)) → mark(z0)
active(fst(pair(z0, z1))) → mark(z0)
active(head(cons(z0, z1))) → mark(z0)
active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(U11(tt, z0, z1, z2))
active(tail(cons(z0, z1))) → mark(z1)
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
mark(U11(z0, z1, z2, z3)) → active(U11(mark(z0), z1, z2, z3))
mark(tt) → active(tt)
mark(U12(z0, z1)) → active(U12(mark(z0), z1))
mark(splitAt(z0, z1)) → active(splitAt(mark(z0), mark(z1)))
mark(pair(z0, z1)) → active(pair(mark(z0), mark(z1)))
mark(cons(z0, z1)) → active(cons(mark(z0), z1))
mark(afterNth(z0, z1)) → active(afterNth(mark(z0), mark(z1)))
mark(snd(z0)) → active(snd(mark(z0)))
mark(and(z0, z1)) → active(and(mark(z0), z1))
mark(fst(z0)) → active(fst(mark(z0)))
mark(head(z0)) → active(head(mark(z0)))
mark(natsFrom(z0)) → active(natsFrom(mark(z0)))
mark(s(z0)) → active(s(mark(z0)))
mark(sel(z0, z1)) → active(sel(mark(z0), mark(z1)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(tail(z0)) → active(tail(mark(z0)))
mark(take(z0, z1)) → active(take(mark(z0), mark(z1)))
U11(mark(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, mark(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, mark(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, mark(z3)) → U11(z0, z1, z2, z3)
U11(active(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, active(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, active(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, active(z3)) → U11(z0, z1, z2, z3)
U12(mark(z0), z1) → U12(z0, z1)
U12(z0, mark(z1)) → U12(z0, z1)
U12(active(z0), z1) → U12(z0, z1)
U12(z0, active(z1)) → U12(z0, z1)
splitAt(mark(z0), z1) → splitAt(z0, z1)
splitAt(z0, mark(z1)) → splitAt(z0, z1)
splitAt(active(z0), z1) → splitAt(z0, z1)
splitAt(z0, active(z1)) → splitAt(z0, z1)
pair(mark(z0), z1) → pair(z0, z1)
pair(z0, mark(z1)) → pair(z0, z1)
pair(active(z0), z1) → pair(z0, z1)
pair(z0, active(z1)) → pair(z0, z1)
cons(mark(z0), z1) → cons(z0, z1)
cons(z0, mark(z1)) → cons(z0, z1)
cons(active(z0), z1) → cons(z0, z1)
cons(z0, active(z1)) → cons(z0, z1)
afterNth(mark(z0), z1) → afterNth(z0, z1)
afterNth(z0, mark(z1)) → afterNth(z0, z1)
afterNth(active(z0), z1) → afterNth(z0, z1)
afterNth(z0, active(z1)) → afterNth(z0, z1)
snd(mark(z0)) → snd(z0)
snd(active(z0)) → snd(z0)
and(mark(z0), z1) → and(z0, z1)
and(z0, mark(z1)) → and(z0, z1)
and(active(z0), z1) → and(z0, z1)
and(z0, active(z1)) → and(z0, z1)
fst(mark(z0)) → fst(z0)
fst(active(z0)) → fst(z0)
head(mark(z0)) → head(z0)
head(active(z0)) → head(z0)
natsFrom(mark(z0)) → natsFrom(z0)
natsFrom(active(z0)) → natsFrom(z0)
s(mark(z0)) → s(z0)
s(active(z0)) → s(z0)
sel(mark(z0), z1) → sel(z0, z1)
sel(z0, mark(z1)) → sel(z0, z1)
sel(active(z0), z1) → sel(z0, z1)
sel(z0, active(z1)) → sel(z0, z1)
tail(mark(z0)) → tail(z0)
tail(active(z0)) → tail(z0)
take(mark(z0), z1) → take(z0, z1)
take(z0, mark(z1)) → take(z0, z1)
take(active(z0), z1) → take(z0, z1)
take(z0, active(z1)) → take(z0, z1)
Tuples:

ACTIVE(U11(tt, z0, z1, z2)) → c(MARK(U12(splitAt(z0, z2), z1)), U12'(splitAt(z0, z2), z1), SPLITAT(z0, z2))
ACTIVE(U12(pair(z0, z1), z2)) → c1(MARK(pair(cons(z2, z0), z1)), PAIR(cons(z2, z0), z1), CONS(z2, z0))
ACTIVE(afterNth(z0, z1)) → c2(MARK(snd(splitAt(z0, z1))), SND(splitAt(z0, z1)), SPLITAT(z0, z1))
ACTIVE(and(tt, z0)) → c3(MARK(z0))
ACTIVE(fst(pair(z0, z1))) → c4(MARK(z0))
ACTIVE(head(cons(z0, z1))) → c5(MARK(z0))
ACTIVE(natsFrom(z0)) → c6(MARK(cons(z0, natsFrom(s(z0)))), CONS(z0, natsFrom(s(z0))), NATSFROM(s(z0)), S(z0))
ACTIVE(sel(z0, z1)) → c7(MARK(head(afterNth(z0, z1))), HEAD(afterNth(z0, z1)), AFTERNTH(z0, z1))
ACTIVE(snd(pair(z0, z1))) → c8(MARK(z1))
ACTIVE(splitAt(0, z0)) → c9(MARK(pair(nil, z0)), PAIR(nil, z0))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c10(MARK(U11(tt, z0, z1, z2)), U11'(tt, z0, z1, z2))
ACTIVE(tail(cons(z0, z1))) → c11(MARK(z1))
ACTIVE(take(z0, z1)) → c12(MARK(fst(splitAt(z0, z1))), FST(splitAt(z0, z1)), SPLITAT(z0, z1))
MARK(U11(z0, z1, z2, z3)) → c13(ACTIVE(U11(mark(z0), z1, z2, z3)), U11'(mark(z0), z1, z2, z3), MARK(z0))
MARK(tt) → c14(ACTIVE(tt))
MARK(U12(z0, z1)) → c15(ACTIVE(U12(mark(z0), z1)), U12'(mark(z0), z1), MARK(z0))
MARK(splitAt(z0, z1)) → c16(ACTIVE(splitAt(mark(z0), mark(z1))), SPLITAT(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(pair(z0, z1)) → c17(ACTIVE(pair(mark(z0), mark(z1))), PAIR(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(cons(z0, z1)) → c18(ACTIVE(cons(mark(z0), z1)), CONS(mark(z0), z1), MARK(z0))
MARK(afterNth(z0, z1)) → c19(ACTIVE(afterNth(mark(z0), mark(z1))), AFTERNTH(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(snd(z0)) → c20(ACTIVE(snd(mark(z0))), SND(mark(z0)), MARK(z0))
MARK(and(z0, z1)) → c21(ACTIVE(and(mark(z0), z1)), AND(mark(z0), z1), MARK(z0))
MARK(fst(z0)) → c22(ACTIVE(fst(mark(z0))), FST(mark(z0)), MARK(z0))
MARK(head(z0)) → c23(ACTIVE(head(mark(z0))), HEAD(mark(z0)), MARK(z0))
MARK(natsFrom(z0)) → c24(ACTIVE(natsFrom(mark(z0))), NATSFROM(mark(z0)), MARK(z0))
MARK(s(z0)) → c25(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0))
MARK(sel(z0, z1)) → c26(ACTIVE(sel(mark(z0), mark(z1))), SEL(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(0) → c27(ACTIVE(0))
MARK(nil) → c28(ACTIVE(nil))
MARK(tail(z0)) → c29(ACTIVE(tail(mark(z0))), TAIL(mark(z0)), MARK(z0))
MARK(take(z0, z1)) → c30(ACTIVE(take(mark(z0), mark(z1))), TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1))
U11'(mark(z0), z1, z2, z3) → c31(U11'(z0, z1, z2, z3))
U11'(z0, mark(z1), z2, z3) → c32(U11'(z0, z1, z2, z3))
U11'(z0, z1, mark(z2), z3) → c33(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, mark(z3)) → c34(U11'(z0, z1, z2, z3))
U11'(active(z0), z1, z2, z3) → c35(U11'(z0, z1, z2, z3))
U11'(z0, active(z1), z2, z3) → c36(U11'(z0, z1, z2, z3))
U11'(z0, z1, active(z2), z3) → c37(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, active(z3)) → c38(U11'(z0, z1, z2, z3))
U12'(mark(z0), z1) → c39(U12'(z0, z1))
U12'(z0, mark(z1)) → c40(U12'(z0, z1))
U12'(active(z0), z1) → c41(U12'(z0, z1))
U12'(z0, active(z1)) → c42(U12'(z0, z1))
SPLITAT(mark(z0), z1) → c43(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(active(z0), z1) → c45(SPLITAT(z0, z1))
SPLITAT(z0, active(z1)) → c46(SPLITAT(z0, z1))
PAIR(mark(z0), z1) → c47(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c48(PAIR(z0, z1))
PAIR(active(z0), z1) → c49(PAIR(z0, z1))
PAIR(z0, active(z1)) → c50(PAIR(z0, z1))
CONS(mark(z0), z1) → c51(CONS(z0, z1))
CONS(z0, mark(z1)) → c52(CONS(z0, z1))
CONS(active(z0), z1) → c53(CONS(z0, z1))
CONS(z0, active(z1)) → c54(CONS(z0, z1))
AFTERNTH(mark(z0), z1) → c55(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c56(AFTERNTH(z0, z1))
AFTERNTH(active(z0), z1) → c57(AFTERNTH(z0, z1))
AFTERNTH(z0, active(z1)) → c58(AFTERNTH(z0, z1))
SND(mark(z0)) → c59(SND(z0))
SND(active(z0)) → c60(SND(z0))
AND(mark(z0), z1) → c61(AND(z0, z1))
AND(z0, mark(z1)) → c62(AND(z0, z1))
AND(active(z0), z1) → c63(AND(z0, z1))
AND(z0, active(z1)) → c64(AND(z0, z1))
FST(mark(z0)) → c65(FST(z0))
FST(active(z0)) → c66(FST(z0))
HEAD(mark(z0)) → c67(HEAD(z0))
HEAD(active(z0)) → c68(HEAD(z0))
NATSFROM(mark(z0)) → c69(NATSFROM(z0))
NATSFROM(active(z0)) → c70(NATSFROM(z0))
S(mark(z0)) → c71(S(z0))
S(active(z0)) → c72(S(z0))
SEL(mark(z0), z1) → c73(SEL(z0, z1))
SEL(z0, mark(z1)) → c74(SEL(z0, z1))
SEL(active(z0), z1) → c75(SEL(z0, z1))
SEL(z0, active(z1)) → c76(SEL(z0, z1))
TAIL(mark(z0)) → c77(TAIL(z0))
TAIL(active(z0)) → c78(TAIL(z0))
TAKE(mark(z0), z1) → c79(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c80(TAKE(z0, z1))
TAKE(active(z0), z1) → c81(TAKE(z0, z1))
TAKE(z0, active(z1)) → c82(TAKE(z0, z1))
S tuples:

ACTIVE(U11(tt, z0, z1, z2)) → c(MARK(U12(splitAt(z0, z2), z1)), U12'(splitAt(z0, z2), z1), SPLITAT(z0, z2))
ACTIVE(U12(pair(z0, z1), z2)) → c1(MARK(pair(cons(z2, z0), z1)), PAIR(cons(z2, z0), z1), CONS(z2, z0))
ACTIVE(afterNth(z0, z1)) → c2(MARK(snd(splitAt(z0, z1))), SND(splitAt(z0, z1)), SPLITAT(z0, z1))
ACTIVE(and(tt, z0)) → c3(MARK(z0))
ACTIVE(fst(pair(z0, z1))) → c4(MARK(z0))
ACTIVE(head(cons(z0, z1))) → c5(MARK(z0))
ACTIVE(natsFrom(z0)) → c6(MARK(cons(z0, natsFrom(s(z0)))), CONS(z0, natsFrom(s(z0))), NATSFROM(s(z0)), S(z0))
ACTIVE(sel(z0, z1)) → c7(MARK(head(afterNth(z0, z1))), HEAD(afterNth(z0, z1)), AFTERNTH(z0, z1))
ACTIVE(snd(pair(z0, z1))) → c8(MARK(z1))
ACTIVE(splitAt(0, z0)) → c9(MARK(pair(nil, z0)), PAIR(nil, z0))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c10(MARK(U11(tt, z0, z1, z2)), U11'(tt, z0, z1, z2))
ACTIVE(tail(cons(z0, z1))) → c11(MARK(z1))
ACTIVE(take(z0, z1)) → c12(MARK(fst(splitAt(z0, z1))), FST(splitAt(z0, z1)), SPLITAT(z0, z1))
MARK(U11(z0, z1, z2, z3)) → c13(ACTIVE(U11(mark(z0), z1, z2, z3)), U11'(mark(z0), z1, z2, z3), MARK(z0))
MARK(tt) → c14(ACTIVE(tt))
MARK(U12(z0, z1)) → c15(ACTIVE(U12(mark(z0), z1)), U12'(mark(z0), z1), MARK(z0))
MARK(splitAt(z0, z1)) → c16(ACTIVE(splitAt(mark(z0), mark(z1))), SPLITAT(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(pair(z0, z1)) → c17(ACTIVE(pair(mark(z0), mark(z1))), PAIR(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(cons(z0, z1)) → c18(ACTIVE(cons(mark(z0), z1)), CONS(mark(z0), z1), MARK(z0))
MARK(afterNth(z0, z1)) → c19(ACTIVE(afterNth(mark(z0), mark(z1))), AFTERNTH(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(snd(z0)) → c20(ACTIVE(snd(mark(z0))), SND(mark(z0)), MARK(z0))
MARK(and(z0, z1)) → c21(ACTIVE(and(mark(z0), z1)), AND(mark(z0), z1), MARK(z0))
MARK(fst(z0)) → c22(ACTIVE(fst(mark(z0))), FST(mark(z0)), MARK(z0))
MARK(head(z0)) → c23(ACTIVE(head(mark(z0))), HEAD(mark(z0)), MARK(z0))
MARK(natsFrom(z0)) → c24(ACTIVE(natsFrom(mark(z0))), NATSFROM(mark(z0)), MARK(z0))
MARK(s(z0)) → c25(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0))
MARK(sel(z0, z1)) → c26(ACTIVE(sel(mark(z0), mark(z1))), SEL(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(0) → c27(ACTIVE(0))
MARK(nil) → c28(ACTIVE(nil))
MARK(tail(z0)) → c29(ACTIVE(tail(mark(z0))), TAIL(mark(z0)), MARK(z0))
MARK(take(z0, z1)) → c30(ACTIVE(take(mark(z0), mark(z1))), TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1))
U11'(mark(z0), z1, z2, z3) → c31(U11'(z0, z1, z2, z3))
U11'(z0, mark(z1), z2, z3) → c32(U11'(z0, z1, z2, z3))
U11'(z0, z1, mark(z2), z3) → c33(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, mark(z3)) → c34(U11'(z0, z1, z2, z3))
U11'(active(z0), z1, z2, z3) → c35(U11'(z0, z1, z2, z3))
U11'(z0, active(z1), z2, z3) → c36(U11'(z0, z1, z2, z3))
U11'(z0, z1, active(z2), z3) → c37(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, active(z3)) → c38(U11'(z0, z1, z2, z3))
U12'(mark(z0), z1) → c39(U12'(z0, z1))
U12'(z0, mark(z1)) → c40(U12'(z0, z1))
U12'(active(z0), z1) → c41(U12'(z0, z1))
U12'(z0, active(z1)) → c42(U12'(z0, z1))
SPLITAT(mark(z0), z1) → c43(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(active(z0), z1) → c45(SPLITAT(z0, z1))
SPLITAT(z0, active(z1)) → c46(SPLITAT(z0, z1))
PAIR(mark(z0), z1) → c47(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c48(PAIR(z0, z1))
PAIR(active(z0), z1) → c49(PAIR(z0, z1))
PAIR(z0, active(z1)) → c50(PAIR(z0, z1))
CONS(mark(z0), z1) → c51(CONS(z0, z1))
CONS(z0, mark(z1)) → c52(CONS(z0, z1))
CONS(active(z0), z1) → c53(CONS(z0, z1))
CONS(z0, active(z1)) → c54(CONS(z0, z1))
AFTERNTH(mark(z0), z1) → c55(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c56(AFTERNTH(z0, z1))
AFTERNTH(active(z0), z1) → c57(AFTERNTH(z0, z1))
AFTERNTH(z0, active(z1)) → c58(AFTERNTH(z0, z1))
SND(mark(z0)) → c59(SND(z0))
SND(active(z0)) → c60(SND(z0))
AND(mark(z0), z1) → c61(AND(z0, z1))
AND(z0, mark(z1)) → c62(AND(z0, z1))
AND(active(z0), z1) → c63(AND(z0, z1))
AND(z0, active(z1)) → c64(AND(z0, z1))
FST(mark(z0)) → c65(FST(z0))
FST(active(z0)) → c66(FST(z0))
HEAD(mark(z0)) → c67(HEAD(z0))
HEAD(active(z0)) → c68(HEAD(z0))
NATSFROM(mark(z0)) → c69(NATSFROM(z0))
NATSFROM(active(z0)) → c70(NATSFROM(z0))
S(mark(z0)) → c71(S(z0))
S(active(z0)) → c72(S(z0))
SEL(mark(z0), z1) → c73(SEL(z0, z1))
SEL(z0, mark(z1)) → c74(SEL(z0, z1))
SEL(active(z0), z1) → c75(SEL(z0, z1))
SEL(z0, active(z1)) → c76(SEL(z0, z1))
TAIL(mark(z0)) → c77(TAIL(z0))
TAIL(active(z0)) → c78(TAIL(z0))
TAKE(mark(z0), z1) → c79(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c80(TAKE(z0, z1))
TAKE(active(z0), z1) → c81(TAKE(z0, z1))
TAKE(z0, active(z1)) → c82(TAKE(z0, z1))
K tuples:none
Defined Rule Symbols:

active, mark, U11, U12, splitAt, pair, cons, afterNth, snd, and, fst, head, natsFrom, s, sel, tail, take

Defined Pair Symbols:

ACTIVE, MARK, U11', U12', SPLITAT, PAIR, CONS, AFTERNTH, SND, AND, FST, HEAD, NATSFROM, S, SEL, TAIL, TAKE

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58, c59, c60, c61, c62, c63, c64, c65, c66, c67, c68, c69, c70, c71, c72, c73, c74, c75, c76, c77, c78, c79, c80, c81, c82

(3) CdtUnreachableProof (EQUIVALENT transformation)

The following tuples could be removed as they are not reachable from basic start terms:

ACTIVE(U11(tt, z0, z1, z2)) → c(MARK(U12(splitAt(z0, z2), z1)), U12'(splitAt(z0, z2), z1), SPLITAT(z0, z2))
ACTIVE(U12(pair(z0, z1), z2)) → c1(MARK(pair(cons(z2, z0), z1)), PAIR(cons(z2, z0), z1), CONS(z2, z0))
ACTIVE(afterNth(z0, z1)) → c2(MARK(snd(splitAt(z0, z1))), SND(splitAt(z0, z1)), SPLITAT(z0, z1))
ACTIVE(and(tt, z0)) → c3(MARK(z0))
ACTIVE(fst(pair(z0, z1))) → c4(MARK(z0))
ACTIVE(head(cons(z0, z1))) → c5(MARK(z0))
ACTIVE(natsFrom(z0)) → c6(MARK(cons(z0, natsFrom(s(z0)))), CONS(z0, natsFrom(s(z0))), NATSFROM(s(z0)), S(z0))
ACTIVE(sel(z0, z1)) → c7(MARK(head(afterNth(z0, z1))), HEAD(afterNth(z0, z1)), AFTERNTH(z0, z1))
ACTIVE(snd(pair(z0, z1))) → c8(MARK(z1))
ACTIVE(splitAt(0, z0)) → c9(MARK(pair(nil, z0)), PAIR(nil, z0))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c10(MARK(U11(tt, z0, z1, z2)), U11'(tt, z0, z1, z2))
ACTIVE(tail(cons(z0, z1))) → c11(MARK(z1))
ACTIVE(take(z0, z1)) → c12(MARK(fst(splitAt(z0, z1))), FST(splitAt(z0, z1)), SPLITAT(z0, z1))
MARK(U11(z0, z1, z2, z3)) → c13(ACTIVE(U11(mark(z0), z1, z2, z3)), U11'(mark(z0), z1, z2, z3), MARK(z0))
MARK(U12(z0, z1)) → c15(ACTIVE(U12(mark(z0), z1)), U12'(mark(z0), z1), MARK(z0))
MARK(splitAt(z0, z1)) → c16(ACTIVE(splitAt(mark(z0), mark(z1))), SPLITAT(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(pair(z0, z1)) → c17(ACTIVE(pair(mark(z0), mark(z1))), PAIR(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(cons(z0, z1)) → c18(ACTIVE(cons(mark(z0), z1)), CONS(mark(z0), z1), MARK(z0))
MARK(afterNth(z0, z1)) → c19(ACTIVE(afterNth(mark(z0), mark(z1))), AFTERNTH(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(snd(z0)) → c20(ACTIVE(snd(mark(z0))), SND(mark(z0)), MARK(z0))
MARK(and(z0, z1)) → c21(ACTIVE(and(mark(z0), z1)), AND(mark(z0), z1), MARK(z0))
MARK(fst(z0)) → c22(ACTIVE(fst(mark(z0))), FST(mark(z0)), MARK(z0))
MARK(head(z0)) → c23(ACTIVE(head(mark(z0))), HEAD(mark(z0)), MARK(z0))
MARK(natsFrom(z0)) → c24(ACTIVE(natsFrom(mark(z0))), NATSFROM(mark(z0)), MARK(z0))
MARK(s(z0)) → c25(ACTIVE(s(mark(z0))), S(mark(z0)), MARK(z0))
MARK(sel(z0, z1)) → c26(ACTIVE(sel(mark(z0), mark(z1))), SEL(mark(z0), mark(z1)), MARK(z0), MARK(z1))
MARK(tail(z0)) → c29(ACTIVE(tail(mark(z0))), TAIL(mark(z0)), MARK(z0))
MARK(take(z0, z1)) → c30(ACTIVE(take(mark(z0), mark(z1))), TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1))
U11'(mark(z0), z1, z2, z3) → c31(U11'(z0, z1, z2, z3))
U11'(z0, mark(z1), z2, z3) → c32(U11'(z0, z1, z2, z3))
U11'(z0, z1, mark(z2), z3) → c33(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, mark(z3)) → c34(U11'(z0, z1, z2, z3))
U11'(active(z0), z1, z2, z3) → c35(U11'(z0, z1, z2, z3))
U11'(z0, active(z1), z2, z3) → c36(U11'(z0, z1, z2, z3))
U11'(z0, z1, active(z2), z3) → c37(U11'(z0, z1, z2, z3))
U11'(z0, z1, z2, active(z3)) → c38(U11'(z0, z1, z2, z3))
U12'(mark(z0), z1) → c39(U12'(z0, z1))
U12'(z0, mark(z1)) → c40(U12'(z0, z1))
U12'(active(z0), z1) → c41(U12'(z0, z1))
U12'(z0, active(z1)) → c42(U12'(z0, z1))
SPLITAT(mark(z0), z1) → c43(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(active(z0), z1) → c45(SPLITAT(z0, z1))
SPLITAT(z0, active(z1)) → c46(SPLITAT(z0, z1))
PAIR(mark(z0), z1) → c47(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c48(PAIR(z0, z1))
PAIR(active(z0), z1) → c49(PAIR(z0, z1))
PAIR(z0, active(z1)) → c50(PAIR(z0, z1))
CONS(mark(z0), z1) → c51(CONS(z0, z1))
CONS(z0, mark(z1)) → c52(CONS(z0, z1))
CONS(active(z0), z1) → c53(CONS(z0, z1))
CONS(z0, active(z1)) → c54(CONS(z0, z1))
AFTERNTH(mark(z0), z1) → c55(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c56(AFTERNTH(z0, z1))
AFTERNTH(active(z0), z1) → c57(AFTERNTH(z0, z1))
AFTERNTH(z0, active(z1)) → c58(AFTERNTH(z0, z1))
SND(mark(z0)) → c59(SND(z0))
SND(active(z0)) → c60(SND(z0))
AND(mark(z0), z1) → c61(AND(z0, z1))
AND(z0, mark(z1)) → c62(AND(z0, z1))
AND(active(z0), z1) → c63(AND(z0, z1))
AND(z0, active(z1)) → c64(AND(z0, z1))
FST(mark(z0)) → c65(FST(z0))
FST(active(z0)) → c66(FST(z0))
HEAD(mark(z0)) → c67(HEAD(z0))
HEAD(active(z0)) → c68(HEAD(z0))
NATSFROM(mark(z0)) → c69(NATSFROM(z0))
NATSFROM(active(z0)) → c70(NATSFROM(z0))
S(mark(z0)) → c71(S(z0))
S(active(z0)) → c72(S(z0))
SEL(mark(z0), z1) → c73(SEL(z0, z1))
SEL(z0, mark(z1)) → c74(SEL(z0, z1))
SEL(active(z0), z1) → c75(SEL(z0, z1))
SEL(z0, active(z1)) → c76(SEL(z0, z1))
TAIL(mark(z0)) → c77(TAIL(z0))
TAIL(active(z0)) → c78(TAIL(z0))
TAKE(mark(z0), z1) → c79(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c80(TAKE(z0, z1))
TAKE(active(z0), z1) → c81(TAKE(z0, z1))
TAKE(z0, active(z1)) → c82(TAKE(z0, z1))

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(U11(tt, z0, z1, z2)) → mark(U12(splitAt(z0, z2), z1))
active(U12(pair(z0, z1), z2)) → mark(pair(cons(z2, z0), z1))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(and(tt, z0)) → mark(z0)
active(fst(pair(z0, z1))) → mark(z0)
active(head(cons(z0, z1))) → mark(z0)
active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(U11(tt, z0, z1, z2))
active(tail(cons(z0, z1))) → mark(z1)
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
mark(U11(z0, z1, z2, z3)) → active(U11(mark(z0), z1, z2, z3))
mark(tt) → active(tt)
mark(U12(z0, z1)) → active(U12(mark(z0), z1))
mark(splitAt(z0, z1)) → active(splitAt(mark(z0), mark(z1)))
mark(pair(z0, z1)) → active(pair(mark(z0), mark(z1)))
mark(cons(z0, z1)) → active(cons(mark(z0), z1))
mark(afterNth(z0, z1)) → active(afterNth(mark(z0), mark(z1)))
mark(snd(z0)) → active(snd(mark(z0)))
mark(and(z0, z1)) → active(and(mark(z0), z1))
mark(fst(z0)) → active(fst(mark(z0)))
mark(head(z0)) → active(head(mark(z0)))
mark(natsFrom(z0)) → active(natsFrom(mark(z0)))
mark(s(z0)) → active(s(mark(z0)))
mark(sel(z0, z1)) → active(sel(mark(z0), mark(z1)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(tail(z0)) → active(tail(mark(z0)))
mark(take(z0, z1)) → active(take(mark(z0), mark(z1)))
U11(mark(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, mark(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, mark(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, mark(z3)) → U11(z0, z1, z2, z3)
U11(active(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, active(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, active(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, active(z3)) → U11(z0, z1, z2, z3)
U12(mark(z0), z1) → U12(z0, z1)
U12(z0, mark(z1)) → U12(z0, z1)
U12(active(z0), z1) → U12(z0, z1)
U12(z0, active(z1)) → U12(z0, z1)
splitAt(mark(z0), z1) → splitAt(z0, z1)
splitAt(z0, mark(z1)) → splitAt(z0, z1)
splitAt(active(z0), z1) → splitAt(z0, z1)
splitAt(z0, active(z1)) → splitAt(z0, z1)
pair(mark(z0), z1) → pair(z0, z1)
pair(z0, mark(z1)) → pair(z0, z1)
pair(active(z0), z1) → pair(z0, z1)
pair(z0, active(z1)) → pair(z0, z1)
cons(mark(z0), z1) → cons(z0, z1)
cons(z0, mark(z1)) → cons(z0, z1)
cons(active(z0), z1) → cons(z0, z1)
cons(z0, active(z1)) → cons(z0, z1)
afterNth(mark(z0), z1) → afterNth(z0, z1)
afterNth(z0, mark(z1)) → afterNth(z0, z1)
afterNth(active(z0), z1) → afterNth(z0, z1)
afterNth(z0, active(z1)) → afterNth(z0, z1)
snd(mark(z0)) → snd(z0)
snd(active(z0)) → snd(z0)
and(mark(z0), z1) → and(z0, z1)
and(z0, mark(z1)) → and(z0, z1)
and(active(z0), z1) → and(z0, z1)
and(z0, active(z1)) → and(z0, z1)
fst(mark(z0)) → fst(z0)
fst(active(z0)) → fst(z0)
head(mark(z0)) → head(z0)
head(active(z0)) → head(z0)
natsFrom(mark(z0)) → natsFrom(z0)
natsFrom(active(z0)) → natsFrom(z0)
s(mark(z0)) → s(z0)
s(active(z0)) → s(z0)
sel(mark(z0), z1) → sel(z0, z1)
sel(z0, mark(z1)) → sel(z0, z1)
sel(active(z0), z1) → sel(z0, z1)
sel(z0, active(z1)) → sel(z0, z1)
tail(mark(z0)) → tail(z0)
tail(active(z0)) → tail(z0)
take(mark(z0), z1) → take(z0, z1)
take(z0, mark(z1)) → take(z0, z1)
take(active(z0), z1) → take(z0, z1)
take(z0, active(z1)) → take(z0, z1)
Tuples:

MARK(tt) → c14(ACTIVE(tt))
MARK(0) → c27(ACTIVE(0))
MARK(nil) → c28(ACTIVE(nil))
S tuples:

MARK(tt) → c14(ACTIVE(tt))
MARK(0) → c27(ACTIVE(0))
MARK(nil) → c28(ACTIVE(nil))
K tuples:none
Defined Rule Symbols:

active, mark, U11, U12, splitAt, pair, cons, afterNth, snd, and, fst, head, natsFrom, s, sel, tail, take

Defined Pair Symbols:

MARK

Compound Symbols:

c14, c27, c28

(5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 3 trailing nodes:

MARK(tt) → c14(ACTIVE(tt))
MARK(0) → c27(ACTIVE(0))
MARK(nil) → c28(ACTIVE(nil))

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(U11(tt, z0, z1, z2)) → mark(U12(splitAt(z0, z2), z1))
active(U12(pair(z0, z1), z2)) → mark(pair(cons(z2, z0), z1))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(and(tt, z0)) → mark(z0)
active(fst(pair(z0, z1))) → mark(z0)
active(head(cons(z0, z1))) → mark(z0)
active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(U11(tt, z0, z1, z2))
active(tail(cons(z0, z1))) → mark(z1)
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
mark(U11(z0, z1, z2, z3)) → active(U11(mark(z0), z1, z2, z3))
mark(tt) → active(tt)
mark(U12(z0, z1)) → active(U12(mark(z0), z1))
mark(splitAt(z0, z1)) → active(splitAt(mark(z0), mark(z1)))
mark(pair(z0, z1)) → active(pair(mark(z0), mark(z1)))
mark(cons(z0, z1)) → active(cons(mark(z0), z1))
mark(afterNth(z0, z1)) → active(afterNth(mark(z0), mark(z1)))
mark(snd(z0)) → active(snd(mark(z0)))
mark(and(z0, z1)) → active(and(mark(z0), z1))
mark(fst(z0)) → active(fst(mark(z0)))
mark(head(z0)) → active(head(mark(z0)))
mark(natsFrom(z0)) → active(natsFrom(mark(z0)))
mark(s(z0)) → active(s(mark(z0)))
mark(sel(z0, z1)) → active(sel(mark(z0), mark(z1)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(tail(z0)) → active(tail(mark(z0)))
mark(take(z0, z1)) → active(take(mark(z0), mark(z1)))
U11(mark(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, mark(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, mark(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, mark(z3)) → U11(z0, z1, z2, z3)
U11(active(z0), z1, z2, z3) → U11(z0, z1, z2, z3)
U11(z0, active(z1), z2, z3) → U11(z0, z1, z2, z3)
U11(z0, z1, active(z2), z3) → U11(z0, z1, z2, z3)
U11(z0, z1, z2, active(z3)) → U11(z0, z1, z2, z3)
U12(mark(z0), z1) → U12(z0, z1)
U12(z0, mark(z1)) → U12(z0, z1)
U12(active(z0), z1) → U12(z0, z1)
U12(z0, active(z1)) → U12(z0, z1)
splitAt(mark(z0), z1) → splitAt(z0, z1)
splitAt(z0, mark(z1)) → splitAt(z0, z1)
splitAt(active(z0), z1) → splitAt(z0, z1)
splitAt(z0, active(z1)) → splitAt(z0, z1)
pair(mark(z0), z1) → pair(z0, z1)
pair(z0, mark(z1)) → pair(z0, z1)
pair(active(z0), z1) → pair(z0, z1)
pair(z0, active(z1)) → pair(z0, z1)
cons(mark(z0), z1) → cons(z0, z1)
cons(z0, mark(z1)) → cons(z0, z1)
cons(active(z0), z1) → cons(z0, z1)
cons(z0, active(z1)) → cons(z0, z1)
afterNth(mark(z0), z1) → afterNth(z0, z1)
afterNth(z0, mark(z1)) → afterNth(z0, z1)
afterNth(active(z0), z1) → afterNth(z0, z1)
afterNth(z0, active(z1)) → afterNth(z0, z1)
snd(mark(z0)) → snd(z0)
snd(active(z0)) → snd(z0)
and(mark(z0), z1) → and(z0, z1)
and(z0, mark(z1)) → and(z0, z1)
and(active(z0), z1) → and(z0, z1)
and(z0, active(z1)) → and(z0, z1)
fst(mark(z0)) → fst(z0)
fst(active(z0)) → fst(z0)
head(mark(z0)) → head(z0)
head(active(z0)) → head(z0)
natsFrom(mark(z0)) → natsFrom(z0)
natsFrom(active(z0)) → natsFrom(z0)
s(mark(z0)) → s(z0)
s(active(z0)) → s(z0)
sel(mark(z0), z1) → sel(z0, z1)
sel(z0, mark(z1)) → sel(z0, z1)
sel(active(z0), z1) → sel(z0, z1)
sel(z0, active(z1)) → sel(z0, z1)
tail(mark(z0)) → tail(z0)
tail(active(z0)) → tail(z0)
take(mark(z0), z1) → take(z0, z1)
take(z0, mark(z1)) → take(z0, z1)
take(active(z0), z1) → take(z0, z1)
take(z0, active(z1)) → take(z0, z1)
Tuples:none
S tuples:none
K tuples:none
Defined Rule Symbols:

active, mark, U11, U12, splitAt, pair, cons, afterNth, snd, and, fst, head, natsFrom, s, sel, tail, take

Defined Pair Symbols:none

Compound Symbols:none

(7) SIsEmptyProof (EQUIVALENT transformation)

The set S is empty

(8) BOUNDS(O(1), O(1))