(0) Obligation:

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

active(natsFrom(N)) → mark(cons(N, natsFrom(s(N))))
active(fst(pair(XS, YS))) → mark(XS)
active(snd(pair(XS, YS))) → mark(YS)
active(splitAt(0, XS)) → mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS))) → mark(u(splitAt(N, XS), N, X, XS))
active(u(pair(YS, ZS), N, X, XS)) → mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS))) → mark(N)
active(tail(cons(N, XS))) → mark(XS)
active(sel(N, XS)) → mark(head(afterNth(N, XS)))
active(take(N, XS)) → mark(fst(splitAt(N, XS)))
active(afterNth(N, XS)) → mark(snd(splitAt(N, XS)))
active(natsFrom(X)) → natsFrom(active(X))
active(cons(X1, X2)) → cons(active(X1), X2)
active(s(X)) → s(active(X))
active(fst(X)) → fst(active(X))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(snd(X)) → snd(active(X))
active(splitAt(X1, X2)) → splitAt(active(X1), X2)
active(splitAt(X1, X2)) → splitAt(X1, active(X2))
active(u(X1, X2, X3, X4)) → u(active(X1), X2, X3, X4)
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
active(sel(X1, X2)) → sel(active(X1), X2)
active(sel(X1, X2)) → sel(X1, active(X2))
active(afterNth(X1, X2)) → afterNth(active(X1), X2)
active(afterNth(X1, X2)) → afterNth(X1, active(X2))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
natsFrom(mark(X)) → mark(natsFrom(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
s(mark(X)) → mark(s(X))
fst(mark(X)) → mark(fst(X))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
snd(mark(X)) → mark(snd(X))
splitAt(mark(X1), X2) → mark(splitAt(X1, X2))
splitAt(X1, mark(X2)) → mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4) → mark(u(X1, X2, X3, X4))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
sel(mark(X1), X2) → mark(sel(X1, X2))
sel(X1, mark(X2)) → mark(sel(X1, X2))
afterNth(mark(X1), X2) → mark(afterNth(X1, X2))
afterNth(X1, mark(X2)) → mark(afterNth(X1, X2))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(natsFrom(X)) → natsFrom(proper(X))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(fst(X)) → fst(proper(X))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(snd(X)) → snd(proper(X))
proper(splitAt(X1, X2)) → splitAt(proper(X1), proper(X2))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(X1, X2, X3, X4)) → u(proper(X1), proper(X2), proper(X3), proper(X4))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
proper(sel(X1, X2)) → sel(proper(X1), proper(X2))
proper(afterNth(X1, X2)) → afterNth(proper(X1), proper(X2))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
natsFrom(ok(X)) → ok(natsFrom(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
s(ok(X)) → ok(s(X))
fst(ok(X)) → ok(fst(X))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
snd(ok(X)) → ok(snd(X))
splitAt(ok(X1), ok(X2)) → ok(splitAt(X1, X2))
u(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(u(X1, X2, X3, X4))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
sel(ok(X1), ok(X2)) → ok(sel(X1, X2))
afterNth(ok(X1), ok(X2)) → ok(afterNth(X1, X2))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Rewrite Strategy: INNERMOST

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

Converted Cpx (relative) TRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

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

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

active, natsFrom, cons, s, fst, pair, snd, splitAt, u, head, tail, sel, afterNth, take, proper, top

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

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

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

Removed 6 trailing nodes:

PROPER(nil) → c68
ACTIVE(fst(pair(z0, z1))) → c1
PROPER(0) → c67
ACTIVE(snd(pair(z0, z1))) → c2
ACTIVE(head(cons(z0, z1))) → c6
ACTIVE(tail(cons(z0, z1))) → c7

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

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

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

active, natsFrom, cons, s, fst, pair, snd, splitAt, u, head, tail, sel, afterNth, take, proper, top

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c, c3, c4, c5, 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, c69, c70, c71, c72, c73, c74, c75, c76

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

Removed 5 trailing tuple parts

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

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

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

active, natsFrom, cons, s, fst, pair, snd, splitAt, u, head, tail, sel, afterNth, take, proper, top

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c4, c5, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10

(7) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID) transformation)

Split RHS of tuples not part of any SCC

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

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

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

active, natsFrom, cons, s, fst, pair, snd, splitAt, u, head, tail, sel, afterNth, take, proper, top

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1

(9) CdtUsableRulesProof (EQUIVALENT transformation)

The following rules are not usable and were removed:

top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

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

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1

(11) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(natsFrom(z0)) → c11(NATSFROM(active(z0)), ACTIVE(z0)) by

ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

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

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11

(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(cons(z0, z1)) → c12(CONS(active(z0), z1), ACTIVE(z0)) by

ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(s(z0)) → c13(S(active(z0)), ACTIVE(z0))
ACTIVE(fst(z0)) → c14(FST(active(z0)), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(snd(z0)) → c17(SND(active(z0)), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(u(z0, z1, z2, z3)) → c20(U(active(z0), z1, z2, z3), ACTIVE(z0))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
S tuples:

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12

(15) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(s(z0)) → c13(S(active(z0)), ACTIVE(z0)) by

ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(fst(z0)) → c14(FST(active(z0)), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(snd(z0)) → c17(SND(active(z0)), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(u(z0, z1, z2, z3)) → c20(U(active(z0), z1, z2, z3), ACTIVE(z0))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13

(17) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(fst(z0)) → c14(FST(active(z0)), ACTIVE(z0)) by

ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(snd(z0)) → c17(SND(active(z0)), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(u(z0, z1, z2, z3)) → c20(U(active(z0), z1, z2, z3), ACTIVE(z0))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14

(19) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(snd(z0)) → c17(SND(active(z0)), ACTIVE(z0)) by

ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(u(z0, z1, z2, z3)) → c20(U(active(z0), z1, z2, z3), ACTIVE(z0))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

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

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17

(21) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(u(z0, z1, z2, z3)) → c20(U(active(z0), z1, z2, z3), ACTIVE(z0)) by

ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20

(23) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(head(z0)) → c21(HEAD(active(z0)), ACTIVE(z0)) by

ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21

(25) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(tail(z0)) → c22(TAIL(active(z0)), ACTIVE(z0)) by

ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22

(27) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(natsFrom(z0)) → c60(NATSFROM(proper(z0)), PROPER(z0)) by

PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)), PROPER(0))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)), PROPER(nil))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)), PROPER(0))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)), PROPER(nil))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)), PROPER(0))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)), PROPER(nil))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c61, c62, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60

(29) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(30) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c61, c62, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60

(31) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(z0, z1)) → c61(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(32) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c62, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61

(33) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(34) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c62, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61

(35) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(s(z0)) → c62(S(proper(z0)), PROPER(z0)) by

PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)), PROPER(0))
PROPER(s(nil)) → c62(S(ok(nil)), PROPER(nil))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(36) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)), PROPER(0))
PROPER(s(nil)) → c62(S(ok(nil)), PROPER(nil))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)), PROPER(0))
PROPER(s(nil)) → c62(S(ok(nil)), PROPER(nil))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62

(37) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(38) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c63, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62

(39) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(fst(z0)) → c63(FST(proper(z0)), PROPER(z0)) by

PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)), PROPER(0))
PROPER(fst(nil)) → c63(FST(ok(nil)), PROPER(nil))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(40) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)), PROPER(0))
PROPER(fst(nil)) → c63(FST(ok(nil)), PROPER(nil))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)), PROPER(0))
PROPER(fst(nil)) → c63(FST(ok(nil)), PROPER(nil))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63

(41) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(42) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c64, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63

(43) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(pair(z0, z1)) → c64(PAIR(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(44) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64

(45) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(46) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c65, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64

(47) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(snd(z0)) → c65(SND(proper(z0)), PROPER(z0)) by

PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)), PROPER(0))
PROPER(snd(nil)) → c65(SND(ok(nil)), PROPER(nil))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(48) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)), PROPER(0))
PROPER(snd(nil)) → c65(SND(ok(nil)), PROPER(nil))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)), PROPER(0))
PROPER(snd(nil)) → c65(SND(ok(nil)), PROPER(nil))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65

(49) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(50) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c66, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65

(51) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(splitAt(z0, z1)) → c66(SPLITAT(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(52) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66

(53) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(54) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c69, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66

(55) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(u(z0, z1, z2, z3)) → c69(U(proper(z0), proper(z1), proper(z2), proper(z3)), PROPER(z0), PROPER(z1), PROPER(z2), PROPER(z3)) by

PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(0))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(nil))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(0), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(nil), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(nil), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(0), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(nil), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))

(56) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(0))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(nil))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(0), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(nil), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(nil), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(0), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(nil), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(0))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(nil))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(0), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(nil), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(nil), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(0), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(nil), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69

(57) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 8 trailing tuple parts

(58) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c70, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69

(59) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(head(z0)) → c70(HEAD(proper(z0)), PROPER(z0)) by

PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)), PROPER(0))
PROPER(head(nil)) → c70(HEAD(ok(nil)), PROPER(nil))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(60) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)), PROPER(0))
PROPER(head(nil)) → c70(HEAD(ok(nil)), PROPER(nil))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)), PROPER(0))
PROPER(head(nil)) → c70(HEAD(ok(nil)), PROPER(nil))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70

(61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(62) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c71, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70

(63) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(tail(z0)) → c71(TAIL(proper(z0)), PROPER(z0)) by

PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)), PROPER(0))
PROPER(tail(nil)) → c71(TAIL(ok(nil)), PROPER(nil))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(64) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)), PROPER(0))
PROPER(tail(nil)) → c71(TAIL(ok(nil)), PROPER(nil))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)), PROPER(0))
PROPER(tail(nil)) → c71(TAIL(ok(nil)), PROPER(nil))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71

(65) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(66) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c72, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71

(67) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(sel(z0, z1)) → c72(SEL(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(68) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72

(69) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(70) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c73, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72

(71) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(afterNth(z0, z1)) → c73(AFTERNTH(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(72) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73

(73) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(74) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c74, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73

(75) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(take(z0, z1)) → c74(TAKE(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))

(76) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0), PROPER(nil))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(nil), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, TOP, PROPER

Compound Symbols:

c3, c15, c16, c18, c19, 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, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74

(77) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 4 trailing tuple parts

(78) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, TOP, PROPER

Compound Symbols:

c3, c15, c16, c18, c19, 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, c75, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74, c74

(79) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(mark(z0)) → c75(TOP(proper(z0)), PROPER(z0)) by

TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)), PROPER(0))
TOP(mark(nil)) → c75(TOP(ok(nil)), PROPER(nil))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))

(80) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)), PROPER(0))
TOP(mark(nil)) → c75(TOP(ok(nil)), PROPER(nil))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)), PROPER(0))
TOP(mark(nil)) → c75(TOP(ok(nil)), PROPER(nil))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, TOP, PROPER

Compound Symbols:

c3, c15, c16, c18, c19, 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, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74, c74, c75

(81) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(82) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)))
TOP(mark(nil)) → c75(TOP(ok(nil)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)))
TOP(mark(nil)) → c75(TOP(ok(nil)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, TOP, PROPER

Compound Symbols:

c3, c15, c16, c18, c19, 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, c76, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74, c74, c75, c75

(83) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(ok(z0)) → c76(TOP(active(z0)), ACTIVE(z0)) by

TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(84) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)))
TOP(mark(nil)) → c75(TOP(ok(nil)))
TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(mark(0)) → c75(TOP(ok(0)))
TOP(mark(nil)) → c75(TOP(ok(nil)))
TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74, c74, c75, c75, c76

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

Removed 2 trailing nodes:

TOP(mark(0)) → c75(TOP(ok(0)))
TOP(mark(nil)) → c75(TOP(ok(nil)))

(86) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))
S tuples:

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

ACTIVE, NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE, PROPER, TOP

Compound Symbols:

c3, c15, c16, c18, c19, 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, c, c8, c9, c10, c1, c11, c12, c13, c14, c17, c20, c21, c22, c60, c60, c61, c61, c62, c62, c63, c63, c64, c64, c65, c65, c66, c66, c69, c69, c70, c70, c71, c71, c72, c72, c73, c73, c74, c74, c75, c76

(87) CdtUnreachableProof (EQUIVALENT transformation)

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

ACTIVE(splitAt(0, z0)) → c3(PAIR(nil, z0))
ACTIVE(pair(z0, z1)) → c15(PAIR(active(z0), z1), ACTIVE(z0))
ACTIVE(pair(z0, z1)) → c16(PAIR(z0, active(z1)), ACTIVE(z1))
ACTIVE(splitAt(z0, z1)) → c18(SPLITAT(active(z0), z1), ACTIVE(z0))
ACTIVE(splitAt(z0, z1)) → c19(SPLITAT(z0, active(z1)), ACTIVE(z1))
ACTIVE(sel(z0, z1)) → c23(SEL(active(z0), z1), ACTIVE(z0))
ACTIVE(sel(z0, z1)) → c24(SEL(z0, active(z1)), ACTIVE(z1))
ACTIVE(afterNth(z0, z1)) → c25(AFTERNTH(active(z0), z1), ACTIVE(z0))
ACTIVE(afterNth(z0, z1)) → c26(AFTERNTH(z0, active(z1)), ACTIVE(z1))
ACTIVE(take(z0, z1)) → c27(TAKE(active(z0), z1), ACTIVE(z0))
ACTIVE(take(z0, z1)) → c28(TAKE(z0, active(z1)), ACTIVE(z1))
ACTIVE(natsFrom(z0)) → c(S(z0))
ACTIVE(sel(z0, z1)) → c8(AFTERNTH(z0, z1))
ACTIVE(take(z0, z1)) → c9(SPLITAT(z0, z1))
ACTIVE(afterNth(z0, z1)) → c10(SPLITAT(z0, z1))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(U(splitAt(z0, z2), z0, z1, z2))
ACTIVE(splitAt(s(z0), cons(z1, z2))) → c1(SPLITAT(z0, z2))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(PAIR(cons(z3, z0), z1))
ACTIVE(u(pair(z0, z1), z2, z3, z4)) → c1(CONS(z3, z0))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(fst(pair(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(natsFrom(snd(pair(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(natsFrom(splitAt(0, z0))) → c11(NATSFROM(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(natsFrom(splitAt(s(z0), cons(z1, z2)))) → c11(NATSFROM(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(natsFrom(u(pair(z0, z1), z2, z3, z4))) → c11(NATSFROM(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(natsFrom(head(cons(z0, z1)))) → c11(NATSFROM(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(natsFrom(tail(cons(z0, z1)))) → c11(NATSFROM(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(natsFrom(z0))) → c11(NATSFROM(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(natsFrom(cons(z0, z1))) → c11(NATSFROM(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(natsFrom(s(z0))) → c11(NATSFROM(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(natsFrom(fst(z0))) → c11(NATSFROM(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(pair(z0, z1))) → c11(NATSFROM(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(natsFrom(snd(z0))) → c11(NATSFROM(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(splitAt(z0, z1))) → c11(NATSFROM(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(natsFrom(u(z0, z1, z2, z3))) → c11(NATSFROM(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(natsFrom(head(z0))) → c11(NATSFROM(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(natsFrom(tail(z0))) → c11(NATSFROM(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(sel(z0, z1))) → c11(NATSFROM(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(afterNth(z0, z1))) → c11(NATSFROM(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(natsFrom(take(z0, z1))) → c11(NATSFROM(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(mark(cons(z0, natsFrom(s(z0)))), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(fst(pair(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(fst(pair(z0, z1))))
ACTIVE(cons(snd(pair(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(snd(pair(z0, z1))))
ACTIVE(cons(splitAt(0, z0), x1)) → c12(CONS(mark(pair(nil, z0)), x1), ACTIVE(splitAt(0, z0)))
ACTIVE(cons(splitAt(s(z0), cons(z1, z2)), x1)) → c12(CONS(mark(u(splitAt(z0, z2), z0, z1, z2)), x1), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(cons(u(pair(z0, z1), z2, z3, z4), x1)) → c12(CONS(mark(pair(cons(z3, z0), z1)), x1), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(cons(head(cons(z0, z1)), x1)) → c12(CONS(mark(z0), x1), ACTIVE(head(cons(z0, z1))))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c12(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(mark(head(afterNth(z0, z1))), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(mark(fst(splitAt(z0, z1))), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(mark(snd(splitAt(z0, z1))), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(natsFrom(z0), x1)) → c12(CONS(natsFrom(active(z0)), x1), ACTIVE(natsFrom(z0)))
ACTIVE(cons(cons(z0, z1), x1)) → c12(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(s(z0), x1)) → c12(CONS(s(active(z0)), x1), ACTIVE(s(z0)))
ACTIVE(cons(fst(z0), x1)) → c12(CONS(fst(active(z0)), x1), ACTIVE(fst(z0)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(active(z0), z1), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(pair(z0, z1), x1)) → c12(CONS(pair(z0, active(z1)), x1), ACTIVE(pair(z0, z1)))
ACTIVE(cons(snd(z0), x1)) → c12(CONS(snd(active(z0)), x1), ACTIVE(snd(z0)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(active(z0), z1), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(splitAt(z0, z1), x1)) → c12(CONS(splitAt(z0, active(z1)), x1), ACTIVE(splitAt(z0, z1)))
ACTIVE(cons(u(z0, z1, z2, z3), x1)) → c12(CONS(u(active(z0), z1, z2, z3), x1), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(cons(head(z0), x1)) → c12(CONS(head(active(z0)), x1), ACTIVE(head(z0)))
ACTIVE(cons(tail(z0), x1)) → c12(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(active(z0), z1), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(sel(z0, z1), x1)) → c12(CONS(sel(z0, active(z1)), x1), ACTIVE(sel(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(active(z0), z1), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(afterNth(z0, z1), x1)) → c12(CONS(afterNth(z0, active(z1)), x1), ACTIVE(afterNth(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(active(z0), z1), x1), ACTIVE(take(z0, z1)))
ACTIVE(cons(take(z0, z1), x1)) → c12(CONS(take(z0, active(z1)), x1), ACTIVE(take(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(s(fst(pair(z0, z1)))) → c13(S(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(s(snd(pair(z0, z1)))) → c13(S(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(s(splitAt(0, z0))) → c13(S(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(s(splitAt(s(z0), cons(z1, z2)))) → c13(S(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(s(u(pair(z0, z1), z2, z3, z4))) → c13(S(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(s(head(cons(z0, z1)))) → c13(S(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(s(tail(cons(z0, z1)))) → c13(S(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(s(sel(z0, z1))) → c13(S(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(natsFrom(z0))) → c13(S(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(s(cons(z0, z1))) → c13(S(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(s(s(z0))) → c13(S(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(s(fst(z0))) → c13(S(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(s(pair(z0, z1))) → c13(S(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(s(snd(z0))) → c13(S(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(splitAt(z0, z1))) → c13(S(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(s(u(z0, z1, z2, z3))) → c13(S(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(s(head(z0))) → c13(S(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(s(tail(z0))) → c13(S(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(s(sel(z0, z1))) → c13(S(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(afterNth(z0, z1))) → c13(S(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(s(take(z0, z1))) → c13(S(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(fst(pair(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(fst(snd(pair(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(fst(splitAt(0, z0))) → c14(FST(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(fst(splitAt(s(z0), cons(z1, z2)))) → c14(FST(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(fst(u(pair(z0, z1), z2, z3, z4))) → c14(FST(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(fst(head(cons(z0, z1)))) → c14(FST(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(fst(tail(cons(z0, z1)))) → c14(FST(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(fst(sel(z0, z1))) → c14(FST(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(natsFrom(z0))) → c14(FST(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(fst(cons(z0, z1))) → c14(FST(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(fst(s(z0))) → c14(FST(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(fst(fst(z0))) → c14(FST(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(fst(pair(z0, z1))) → c14(FST(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(fst(snd(z0))) → c14(FST(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(splitAt(z0, z1))) → c14(FST(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(fst(u(z0, z1, z2, z3))) → c14(FST(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(fst(head(z0))) → c14(FST(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(fst(tail(z0))) → c14(FST(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(fst(sel(z0, z1))) → c14(FST(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(afterNth(z0, z1))) → c14(FST(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(fst(take(z0, z1))) → c14(FST(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(fst(pair(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(snd(snd(pair(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(snd(splitAt(0, z0))) → c17(SND(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(snd(splitAt(s(z0), cons(z1, z2)))) → c17(SND(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(snd(u(pair(z0, z1), z2, z3, z4))) → c17(SND(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(snd(head(cons(z0, z1)))) → c17(SND(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(snd(tail(cons(z0, z1)))) → c17(SND(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(snd(sel(z0, z1))) → c17(SND(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(natsFrom(z0))) → c17(SND(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(snd(cons(z0, z1))) → c17(SND(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(snd(s(z0))) → c17(SND(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(snd(fst(z0))) → c17(SND(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(snd(pair(z0, z1))) → c17(SND(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(snd(snd(z0))) → c17(SND(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(splitAt(z0, z1))) → c17(SND(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(snd(u(z0, z1, z2, z3))) → c17(SND(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(snd(head(z0))) → c17(SND(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(snd(tail(z0))) → c17(SND(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(snd(sel(z0, z1))) → c17(SND(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(afterNth(z0, z1))) → c17(SND(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(snd(take(z0, z1))) → c17(SND(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(mark(cons(z0, natsFrom(s(z0)))), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(fst(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(fst(pair(z0, z1))))
ACTIVE(u(snd(pair(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(snd(pair(z0, z1))))
ACTIVE(u(splitAt(0, z0), x1, x2, x3)) → c20(U(mark(pair(nil, z0)), x1, x2, x3), ACTIVE(splitAt(0, z0)))
ACTIVE(u(splitAt(s(z0), cons(z1, z2)), x1, x2, x3)) → c20(U(mark(u(splitAt(z0, z2), z0, z1, z2)), x1, x2, x3), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(u(u(pair(z0, z1), z2, z3, z4), x1, x2, x3)) → c20(U(mark(pair(cons(z3, z0), z1)), x1, x2, x3), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(u(head(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z0), x1, x2, x3), ACTIVE(head(cons(z0, z1))))
ACTIVE(u(tail(cons(z0, z1)), x1, x2, x3)) → c20(U(mark(z1), x1, x2, x3), ACTIVE(tail(cons(z0, z1))))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(mark(head(afterNth(z0, z1))), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(mark(fst(splitAt(z0, z1))), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(mark(snd(splitAt(z0, z1))), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(natsFrom(z0), x1, x2, x3)) → c20(U(natsFrom(active(z0)), x1, x2, x3), ACTIVE(natsFrom(z0)))
ACTIVE(u(cons(z0, z1), x1, x2, x3)) → c20(U(cons(active(z0), z1), x1, x2, x3), ACTIVE(cons(z0, z1)))
ACTIVE(u(s(z0), x1, x2, x3)) → c20(U(s(active(z0)), x1, x2, x3), ACTIVE(s(z0)))
ACTIVE(u(fst(z0), x1, x2, x3)) → c20(U(fst(active(z0)), x1, x2, x3), ACTIVE(fst(z0)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(active(z0), z1), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(pair(z0, z1), x1, x2, x3)) → c20(U(pair(z0, active(z1)), x1, x2, x3), ACTIVE(pair(z0, z1)))
ACTIVE(u(snd(z0), x1, x2, x3)) → c20(U(snd(active(z0)), x1, x2, x3), ACTIVE(snd(z0)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(active(z0), z1), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(splitAt(z0, z1), x1, x2, x3)) → c20(U(splitAt(z0, active(z1)), x1, x2, x3), ACTIVE(splitAt(z0, z1)))
ACTIVE(u(u(z0, z1, z2, z3), x1, x2, x3)) → c20(U(u(active(z0), z1, z2, z3), x1, x2, x3), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(u(head(z0), x1, x2, x3)) → c20(U(head(active(z0)), x1, x2, x3), ACTIVE(head(z0)))
ACTIVE(u(tail(z0), x1, x2, x3)) → c20(U(tail(active(z0)), x1, x2, x3), ACTIVE(tail(z0)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(active(z0), z1), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(sel(z0, z1), x1, x2, x3)) → c20(U(sel(z0, active(z1)), x1, x2, x3), ACTIVE(sel(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(active(z0), z1), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(afterNth(z0, z1), x1, x2, x3)) → c20(U(afterNth(z0, active(z1)), x1, x2, x3), ACTIVE(afterNth(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(active(z0), z1), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(u(take(z0, z1), x1, x2, x3)) → c20(U(take(z0, active(z1)), x1, x2, x3), ACTIVE(take(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(head(fst(pair(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(head(snd(pair(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(head(splitAt(0, z0))) → c21(HEAD(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(head(splitAt(s(z0), cons(z1, z2)))) → c21(HEAD(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(head(u(pair(z0, z1), z2, z3, z4))) → c21(HEAD(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(head(head(cons(z0, z1)))) → c21(HEAD(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(head(tail(cons(z0, z1)))) → c21(HEAD(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(natsFrom(z0))) → c21(HEAD(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(head(cons(z0, z1))) → c21(HEAD(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(head(s(z0))) → c21(HEAD(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(head(fst(z0))) → c21(HEAD(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(head(pair(z0, z1))) → c21(HEAD(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(head(snd(z0))) → c21(HEAD(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(splitAt(z0, z1))) → c21(HEAD(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(head(u(z0, z1, z2, z3))) → c21(HEAD(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(head(head(z0))) → c21(HEAD(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(head(tail(z0))) → c21(HEAD(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(head(sel(z0, z1))) → c21(HEAD(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(afterNth(z0, z1))) → c21(HEAD(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(head(take(z0, z1))) → c21(HEAD(take(z0, active(z1))), ACTIVE(take(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(fst(pair(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(fst(pair(z0, z1))))
ACTIVE(tail(snd(pair(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(snd(pair(z0, z1))))
ACTIVE(tail(splitAt(0, z0))) → c22(TAIL(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
ACTIVE(tail(splitAt(s(z0), cons(z1, z2)))) → c22(TAIL(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
ACTIVE(tail(u(pair(z0, z1), z2, z3, z4))) → c22(TAIL(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
ACTIVE(tail(head(cons(z0, z1)))) → c22(TAIL(mark(z0)), ACTIVE(head(cons(z0, z1))))
ACTIVE(tail(tail(cons(z0, z1)))) → c22(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(natsFrom(z0))) → c22(TAIL(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
ACTIVE(tail(cons(z0, z1))) → c22(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(s(z0))) → c22(TAIL(s(active(z0))), ACTIVE(s(z0)))
ACTIVE(tail(fst(z0))) → c22(TAIL(fst(active(z0))), ACTIVE(fst(z0)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
ACTIVE(tail(pair(z0, z1))) → c22(TAIL(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
ACTIVE(tail(snd(z0))) → c22(TAIL(snd(active(z0))), ACTIVE(snd(z0)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(splitAt(z0, z1))) → c22(TAIL(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
ACTIVE(tail(u(z0, z1, z2, z3))) → c22(TAIL(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
ACTIVE(tail(head(z0))) → c22(TAIL(head(active(z0))), ACTIVE(head(z0)))
ACTIVE(tail(tail(z0))) → c22(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
ACTIVE(tail(sel(z0, z1))) → c22(TAIL(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(afterNth(z0, z1))) → c22(TAIL(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(active(z0), z1)), ACTIVE(take(z0, z1)))
ACTIVE(tail(take(z0, z1))) → c22(TAIL(take(z0, active(z1))), ACTIVE(take(z0, z1)))
PROPER(natsFrom(natsFrom(z0))) → c60(NATSFROM(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(natsFrom(cons(z0, z1))) → c60(NATSFROM(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(natsFrom(s(z0))) → c60(NATSFROM(s(proper(z0))), PROPER(s(z0)))
PROPER(natsFrom(fst(z0))) → c60(NATSFROM(fst(proper(z0))), PROPER(fst(z0)))
PROPER(natsFrom(pair(z0, z1))) → c60(NATSFROM(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(natsFrom(snd(z0))) → c60(NATSFROM(snd(proper(z0))), PROPER(snd(z0)))
PROPER(natsFrom(splitAt(z0, z1))) → c60(NATSFROM(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(natsFrom(u(z0, z1, z2, z3))) → c60(NATSFROM(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(natsFrom(head(z0))) → c60(NATSFROM(head(proper(z0))), PROPER(head(z0)))
PROPER(natsFrom(tail(z0))) → c60(NATSFROM(tail(proper(z0))), PROPER(tail(z0)))
PROPER(natsFrom(sel(z0, z1))) → c60(NATSFROM(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(natsFrom(afterNth(z0, z1))) → c60(NATSFROM(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(natsFrom(take(z0, z1))) → c60(NATSFROM(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(natsFrom(0)) → c60(NATSFROM(ok(0)))
PROPER(natsFrom(nil)) → c60(NATSFROM(ok(nil)))
PROPER(cons(x0, natsFrom(z0))) → c61(CONS(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(cons(x0, cons(z0, z1))) → c61(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, s(z0))) → c61(CONS(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(cons(x0, fst(z0))) → c61(CONS(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(cons(x0, pair(z0, z1))) → c61(CONS(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(cons(x0, snd(z0))) → c61(CONS(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(cons(x0, splitAt(z0, z1))) → c61(CONS(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(cons(x0, u(z0, z1, z2, z3))) → c61(CONS(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(cons(x0, head(z0))) → c61(CONS(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(cons(x0, tail(z0))) → c61(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(x0, sel(z0, z1))) → c61(CONS(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(cons(x0, afterNth(z0, z1))) → c61(CONS(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(cons(x0, take(z0, z1))) → c61(CONS(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(cons(natsFrom(z0), x1)) → c61(CONS(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c61(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(s(z0), x1)) → c61(CONS(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(cons(fst(z0), x1)) → c61(CONS(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(cons(pair(z0, z1), x1)) → c61(CONS(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(cons(snd(z0), x1)) → c61(CONS(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(cons(splitAt(z0, z1), x1)) → c61(CONS(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(cons(u(z0, z1, z2, z3), x1)) → c61(CONS(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(cons(head(z0), x1)) → c61(CONS(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c61(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(sel(z0, z1), x1)) → c61(CONS(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(cons(afterNth(z0, z1), x1)) → c61(CONS(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(cons(take(z0, z1), x1)) → c61(CONS(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(cons(x0, 0)) → c61(CONS(proper(x0), ok(0)), PROPER(x0))
PROPER(cons(x0, nil)) → c61(CONS(proper(x0), ok(nil)), PROPER(x0))
PROPER(cons(0, x1)) → c61(CONS(ok(0), proper(x1)), PROPER(x1))
PROPER(cons(nil, x1)) → c61(CONS(ok(nil), proper(x1)), PROPER(x1))
PROPER(s(natsFrom(z0))) → c62(S(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(s(cons(z0, z1))) → c62(S(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(s(s(z0))) → c62(S(s(proper(z0))), PROPER(s(z0)))
PROPER(s(fst(z0))) → c62(S(fst(proper(z0))), PROPER(fst(z0)))
PROPER(s(pair(z0, z1))) → c62(S(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(s(snd(z0))) → c62(S(snd(proper(z0))), PROPER(snd(z0)))
PROPER(s(splitAt(z0, z1))) → c62(S(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(s(u(z0, z1, z2, z3))) → c62(S(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(s(head(z0))) → c62(S(head(proper(z0))), PROPER(head(z0)))
PROPER(s(tail(z0))) → c62(S(tail(proper(z0))), PROPER(tail(z0)))
PROPER(s(sel(z0, z1))) → c62(S(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(s(afterNth(z0, z1))) → c62(S(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(s(take(z0, z1))) → c62(S(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(s(0)) → c62(S(ok(0)))
PROPER(s(nil)) → c62(S(ok(nil)))
PROPER(fst(natsFrom(z0))) → c63(FST(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(fst(cons(z0, z1))) → c63(FST(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(fst(s(z0))) → c63(FST(s(proper(z0))), PROPER(s(z0)))
PROPER(fst(fst(z0))) → c63(FST(fst(proper(z0))), PROPER(fst(z0)))
PROPER(fst(pair(z0, z1))) → c63(FST(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(fst(snd(z0))) → c63(FST(snd(proper(z0))), PROPER(snd(z0)))
PROPER(fst(splitAt(z0, z1))) → c63(FST(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(fst(u(z0, z1, z2, z3))) → c63(FST(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(fst(head(z0))) → c63(FST(head(proper(z0))), PROPER(head(z0)))
PROPER(fst(tail(z0))) → c63(FST(tail(proper(z0))), PROPER(tail(z0)))
PROPER(fst(sel(z0, z1))) → c63(FST(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(fst(afterNth(z0, z1))) → c63(FST(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(fst(take(z0, z1))) → c63(FST(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(fst(0)) → c63(FST(ok(0)))
PROPER(fst(nil)) → c63(FST(ok(nil)))
PROPER(pair(x0, natsFrom(z0))) → c64(PAIR(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(pair(x0, cons(z0, z1))) → c64(PAIR(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(pair(x0, s(z0))) → c64(PAIR(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(pair(x0, fst(z0))) → c64(PAIR(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(pair(x0, pair(z0, z1))) → c64(PAIR(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(pair(x0, snd(z0))) → c64(PAIR(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(pair(x0, splitAt(z0, z1))) → c64(PAIR(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(pair(x0, u(z0, z1, z2, z3))) → c64(PAIR(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(pair(x0, head(z0))) → c64(PAIR(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(pair(x0, tail(z0))) → c64(PAIR(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(pair(x0, sel(z0, z1))) → c64(PAIR(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(pair(x0, afterNth(z0, z1))) → c64(PAIR(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(pair(x0, take(z0, z1))) → c64(PAIR(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(pair(natsFrom(z0), x1)) → c64(PAIR(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(pair(cons(z0, z1), x1)) → c64(PAIR(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(pair(s(z0), x1)) → c64(PAIR(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(pair(fst(z0), x1)) → c64(PAIR(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(pair(pair(z0, z1), x1)) → c64(PAIR(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(pair(snd(z0), x1)) → c64(PAIR(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(pair(splitAt(z0, z1), x1)) → c64(PAIR(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(pair(u(z0, z1, z2, z3), x1)) → c64(PAIR(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(pair(head(z0), x1)) → c64(PAIR(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(pair(tail(z0), x1)) → c64(PAIR(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(pair(sel(z0, z1), x1)) → c64(PAIR(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(pair(afterNth(z0, z1), x1)) → c64(PAIR(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(pair(take(z0, z1), x1)) → c64(PAIR(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(pair(x0, 0)) → c64(PAIR(proper(x0), ok(0)), PROPER(x0))
PROPER(pair(x0, nil)) → c64(PAIR(proper(x0), ok(nil)), PROPER(x0))
PROPER(pair(0, x1)) → c64(PAIR(ok(0), proper(x1)), PROPER(x1))
PROPER(pair(nil, x1)) → c64(PAIR(ok(nil), proper(x1)), PROPER(x1))
PROPER(snd(natsFrom(z0))) → c65(SND(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(snd(cons(z0, z1))) → c65(SND(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(snd(s(z0))) → c65(SND(s(proper(z0))), PROPER(s(z0)))
PROPER(snd(fst(z0))) → c65(SND(fst(proper(z0))), PROPER(fst(z0)))
PROPER(snd(pair(z0, z1))) → c65(SND(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(snd(snd(z0))) → c65(SND(snd(proper(z0))), PROPER(snd(z0)))
PROPER(snd(splitAt(z0, z1))) → c65(SND(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(snd(u(z0, z1, z2, z3))) → c65(SND(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(snd(head(z0))) → c65(SND(head(proper(z0))), PROPER(head(z0)))
PROPER(snd(tail(z0))) → c65(SND(tail(proper(z0))), PROPER(tail(z0)))
PROPER(snd(sel(z0, z1))) → c65(SND(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(snd(afterNth(z0, z1))) → c65(SND(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(snd(take(z0, z1))) → c65(SND(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(snd(0)) → c65(SND(ok(0)))
PROPER(snd(nil)) → c65(SND(ok(nil)))
PROPER(splitAt(x0, natsFrom(z0))) → c66(SPLITAT(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(splitAt(x0, cons(z0, z1))) → c66(SPLITAT(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(splitAt(x0, s(z0))) → c66(SPLITAT(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(splitAt(x0, fst(z0))) → c66(SPLITAT(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(splitAt(x0, pair(z0, z1))) → c66(SPLITAT(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(splitAt(x0, snd(z0))) → c66(SPLITAT(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(splitAt(x0, splitAt(z0, z1))) → c66(SPLITAT(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(splitAt(x0, u(z0, z1, z2, z3))) → c66(SPLITAT(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(splitAt(x0, head(z0))) → c66(SPLITAT(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(splitAt(x0, tail(z0))) → c66(SPLITAT(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(splitAt(x0, sel(z0, z1))) → c66(SPLITAT(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(splitAt(x0, afterNth(z0, z1))) → c66(SPLITAT(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(splitAt(x0, take(z0, z1))) → c66(SPLITAT(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(splitAt(natsFrom(z0), x1)) → c66(SPLITAT(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(splitAt(cons(z0, z1), x1)) → c66(SPLITAT(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(splitAt(s(z0), x1)) → c66(SPLITAT(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(splitAt(fst(z0), x1)) → c66(SPLITAT(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(splitAt(pair(z0, z1), x1)) → c66(SPLITAT(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(splitAt(snd(z0), x1)) → c66(SPLITAT(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(splitAt(splitAt(z0, z1), x1)) → c66(SPLITAT(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(splitAt(u(z0, z1, z2, z3), x1)) → c66(SPLITAT(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(splitAt(head(z0), x1)) → c66(SPLITAT(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(splitAt(tail(z0), x1)) → c66(SPLITAT(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(splitAt(sel(z0, z1), x1)) → c66(SPLITAT(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(splitAt(afterNth(z0, z1), x1)) → c66(SPLITAT(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(splitAt(take(z0, z1), x1)) → c66(SPLITAT(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(splitAt(x0, 0)) → c66(SPLITAT(proper(x0), ok(0)), PROPER(x0))
PROPER(splitAt(x0, nil)) → c66(SPLITAT(proper(x0), ok(nil)), PROPER(x0))
PROPER(splitAt(0, x1)) → c66(SPLITAT(ok(0), proper(x1)), PROPER(x1))
PROPER(splitAt(nil, x1)) → c66(SPLITAT(ok(nil), proper(x1)), PROPER(x1))
PROPER(u(x0, x1, x2, natsFrom(z0))) → c69(U(proper(x0), proper(x1), proper(x2), natsFrom(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(natsFrom(z0)))
PROPER(u(x0, x1, x2, cons(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(cons(z0, z1)))
PROPER(u(x0, x1, x2, s(z0))) → c69(U(proper(x0), proper(x1), proper(x2), s(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(s(z0)))
PROPER(u(x0, x1, x2, fst(z0))) → c69(U(proper(x0), proper(x1), proper(x2), fst(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(fst(z0)))
PROPER(u(x0, x1, x2, pair(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(pair(z0, z1)))
PROPER(u(x0, x1, x2, snd(z0))) → c69(U(proper(x0), proper(x1), proper(x2), snd(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(snd(z0)))
PROPER(u(x0, x1, x2, splitAt(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(splitAt(z0, z1)))
PROPER(u(x0, x1, x2, u(z0, z1, z2, z3))) → c69(U(proper(x0), proper(x1), proper(x2), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(u(z0, z1, z2, z3)))
PROPER(u(x0, x1, x2, head(z0))) → c69(U(proper(x0), proper(x1), proper(x2), head(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(head(z0)))
PROPER(u(x0, x1, x2, tail(z0))) → c69(U(proper(x0), proper(x1), proper(x2), tail(proper(z0))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(tail(z0)))
PROPER(u(x0, x1, x2, sel(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(sel(z0, z1)))
PROPER(u(x0, x1, x2, afterNth(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(afterNth(z0, z1)))
PROPER(u(x0, x1, x2, take(z0, z1))) → c69(U(proper(x0), proper(x1), proper(x2), take(proper(z0), proper(z1))), PROPER(x0), PROPER(x1), PROPER(x2), PROPER(take(z0, z1)))
PROPER(u(x0, x1, natsFrom(z0), x3)) → c69(U(proper(x0), proper(x1), natsFrom(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(natsFrom(z0)), PROPER(x3))
PROPER(u(x0, x1, cons(z0, z1), x3)) → c69(U(proper(x0), proper(x1), cons(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(cons(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, s(z0), x3)) → c69(U(proper(x0), proper(x1), s(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(s(z0)), PROPER(x3))
PROPER(u(x0, x1, fst(z0), x3)) → c69(U(proper(x0), proper(x1), fst(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(fst(z0)), PROPER(x3))
PROPER(u(x0, x1, pair(z0, z1), x3)) → c69(U(proper(x0), proper(x1), pair(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(pair(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, snd(z0), x3)) → c69(U(proper(x0), proper(x1), snd(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(snd(z0)), PROPER(x3))
PROPER(u(x0, x1, splitAt(z0, z1), x3)) → c69(U(proper(x0), proper(x1), splitAt(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(splitAt(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, u(z0, z1, z2, z3), x3)) → c69(U(proper(x0), proper(x1), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(u(z0, z1, z2, z3)), PROPER(x3))
PROPER(u(x0, x1, head(z0), x3)) → c69(U(proper(x0), proper(x1), head(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(head(z0)), PROPER(x3))
PROPER(u(x0, x1, tail(z0), x3)) → c69(U(proper(x0), proper(x1), tail(proper(z0)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(tail(z0)), PROPER(x3))
PROPER(u(x0, x1, sel(z0, z1), x3)) → c69(U(proper(x0), proper(x1), sel(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(sel(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, afterNth(z0, z1), x3)) → c69(U(proper(x0), proper(x1), afterNth(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(afterNth(z0, z1)), PROPER(x3))
PROPER(u(x0, x1, take(z0, z1), x3)) → c69(U(proper(x0), proper(x1), take(proper(z0), proper(z1)), proper(x3)), PROPER(x0), PROPER(x1), PROPER(take(z0, z1)), PROPER(x3))
PROPER(u(x0, natsFrom(z0), x2, x3)) → c69(U(proper(x0), natsFrom(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(natsFrom(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, cons(z0, z1), x2, x3)) → c69(U(proper(x0), cons(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(cons(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, s(z0), x2, x3)) → c69(U(proper(x0), s(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(s(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, fst(z0), x2, x3)) → c69(U(proper(x0), fst(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(fst(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, pair(z0, z1), x2, x3)) → c69(U(proper(x0), pair(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(pair(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, snd(z0), x2, x3)) → c69(U(proper(x0), snd(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(snd(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, splitAt(z0, z1), x2, x3)) → c69(U(proper(x0), splitAt(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(splitAt(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, u(z0, z1, z2, z3), x2, x3)) → c69(U(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x2), proper(x3)), PROPER(x0), PROPER(u(z0, z1, z2, z3)), PROPER(x2), PROPER(x3))
PROPER(u(x0, head(z0), x2, x3)) → c69(U(proper(x0), head(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(head(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, tail(z0), x2, x3)) → c69(U(proper(x0), tail(proper(z0)), proper(x2), proper(x3)), PROPER(x0), PROPER(tail(z0)), PROPER(x2), PROPER(x3))
PROPER(u(x0, sel(z0, z1), x2, x3)) → c69(U(proper(x0), sel(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(sel(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, afterNth(z0, z1), x2, x3)) → c69(U(proper(x0), afterNth(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(afterNth(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(x0, take(z0, z1), x2, x3)) → c69(U(proper(x0), take(proper(z0), proper(z1)), proper(x2), proper(x3)), PROPER(x0), PROPER(take(z0, z1)), PROPER(x2), PROPER(x3))
PROPER(u(natsFrom(z0), x1, x2, x3)) → c69(U(natsFrom(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(natsFrom(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(cons(z0, z1), x1, x2, x3)) → c69(U(cons(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(cons(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(s(z0), x1, x2, x3)) → c69(U(s(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(s(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(fst(z0), x1, x2, x3)) → c69(U(fst(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(fst(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(pair(z0, z1), x1, x2, x3)) → c69(U(pair(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(pair(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(snd(z0), x1, x2, x3)) → c69(U(snd(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(snd(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(splitAt(z0, z1), x1, x2, x3)) → c69(U(splitAt(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(splitAt(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(u(z0, z1, z2, z3), x1, x2, x3)) → c69(U(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1), proper(x2), proper(x3)), PROPER(u(z0, z1, z2, z3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(head(z0), x1, x2, x3)) → c69(U(head(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(head(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(tail(z0), x1, x2, x3)) → c69(U(tail(proper(z0)), proper(x1), proper(x2), proper(x3)), PROPER(tail(z0)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(sel(z0, z1), x1, x2, x3)) → c69(U(sel(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(sel(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(afterNth(z0, z1), x1, x2, x3)) → c69(U(afterNth(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(afterNth(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(take(z0, z1), x1, x2, x3)) → c69(U(take(proper(z0), proper(z1)), proper(x1), proper(x2), proper(x3)), PROPER(take(z0, z1)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(x0, x1, x2, 0)) → c69(U(proper(x0), proper(x1), proper(x2), ok(0)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, x2, nil)) → c69(U(proper(x0), proper(x1), proper(x2), ok(nil)), PROPER(x0), PROPER(x1), PROPER(x2))
PROPER(u(x0, x1, 0, x3)) → c69(U(proper(x0), proper(x1), ok(0), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, x1, nil, x3)) → c69(U(proper(x0), proper(x1), ok(nil), proper(x3)), PROPER(x0), PROPER(x1), PROPER(x3))
PROPER(u(x0, 0, x2, x3)) → c69(U(proper(x0), ok(0), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(x0, nil, x2, x3)) → c69(U(proper(x0), ok(nil), proper(x2), proper(x3)), PROPER(x0), PROPER(x2), PROPER(x3))
PROPER(u(0, x1, x2, x3)) → c69(U(ok(0), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(u(nil, x1, x2, x3)) → c69(U(ok(nil), proper(x1), proper(x2), proper(x3)), PROPER(x1), PROPER(x2), PROPER(x3))
PROPER(head(natsFrom(z0))) → c70(HEAD(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(head(cons(z0, z1))) → c70(HEAD(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(head(s(z0))) → c70(HEAD(s(proper(z0))), PROPER(s(z0)))
PROPER(head(fst(z0))) → c70(HEAD(fst(proper(z0))), PROPER(fst(z0)))
PROPER(head(pair(z0, z1))) → c70(HEAD(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(head(snd(z0))) → c70(HEAD(snd(proper(z0))), PROPER(snd(z0)))
PROPER(head(splitAt(z0, z1))) → c70(HEAD(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(head(u(z0, z1, z2, z3))) → c70(HEAD(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(head(head(z0))) → c70(HEAD(head(proper(z0))), PROPER(head(z0)))
PROPER(head(tail(z0))) → c70(HEAD(tail(proper(z0))), PROPER(tail(z0)))
PROPER(head(sel(z0, z1))) → c70(HEAD(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(head(afterNth(z0, z1))) → c70(HEAD(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(head(take(z0, z1))) → c70(HEAD(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(head(0)) → c70(HEAD(ok(0)))
PROPER(head(nil)) → c70(HEAD(ok(nil)))
PROPER(tail(natsFrom(z0))) → c71(TAIL(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
PROPER(tail(cons(z0, z1))) → c71(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(s(z0))) → c71(TAIL(s(proper(z0))), PROPER(s(z0)))
PROPER(tail(fst(z0))) → c71(TAIL(fst(proper(z0))), PROPER(fst(z0)))
PROPER(tail(pair(z0, z1))) → c71(TAIL(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
PROPER(tail(snd(z0))) → c71(TAIL(snd(proper(z0))), PROPER(snd(z0)))
PROPER(tail(splitAt(z0, z1))) → c71(TAIL(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
PROPER(tail(u(z0, z1, z2, z3))) → c71(TAIL(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
PROPER(tail(head(z0))) → c71(TAIL(head(proper(z0))), PROPER(head(z0)))
PROPER(tail(tail(z0))) → c71(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(sel(z0, z1))) → c71(TAIL(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
PROPER(tail(afterNth(z0, z1))) → c71(TAIL(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
PROPER(tail(take(z0, z1))) → c71(TAIL(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
PROPER(tail(0)) → c71(TAIL(ok(0)))
PROPER(tail(nil)) → c71(TAIL(ok(nil)))
PROPER(sel(x0, natsFrom(z0))) → c72(SEL(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(sel(x0, cons(z0, z1))) → c72(SEL(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(sel(x0, s(z0))) → c72(SEL(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(sel(x0, fst(z0))) → c72(SEL(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(sel(x0, pair(z0, z1))) → c72(SEL(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(sel(x0, snd(z0))) → c72(SEL(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(sel(x0, splitAt(z0, z1))) → c72(SEL(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(sel(x0, u(z0, z1, z2, z3))) → c72(SEL(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(sel(x0, head(z0))) → c72(SEL(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(sel(x0, tail(z0))) → c72(SEL(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(sel(x0, sel(z0, z1))) → c72(SEL(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(sel(x0, afterNth(z0, z1))) → c72(SEL(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(sel(x0, take(z0, z1))) → c72(SEL(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(sel(natsFrom(z0), x1)) → c72(SEL(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(sel(cons(z0, z1), x1)) → c72(SEL(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(sel(s(z0), x1)) → c72(SEL(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(sel(fst(z0), x1)) → c72(SEL(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(sel(pair(z0, z1), x1)) → c72(SEL(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(sel(snd(z0), x1)) → c72(SEL(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(sel(splitAt(z0, z1), x1)) → c72(SEL(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(sel(u(z0, z1, z2, z3), x1)) → c72(SEL(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(sel(head(z0), x1)) → c72(SEL(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(sel(tail(z0), x1)) → c72(SEL(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(sel(sel(z0, z1), x1)) → c72(SEL(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(sel(afterNth(z0, z1), x1)) → c72(SEL(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(sel(take(z0, z1), x1)) → c72(SEL(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(sel(x0, 0)) → c72(SEL(proper(x0), ok(0)), PROPER(x0))
PROPER(sel(x0, nil)) → c72(SEL(proper(x0), ok(nil)), PROPER(x0))
PROPER(sel(0, x1)) → c72(SEL(ok(0), proper(x1)), PROPER(x1))
PROPER(sel(nil, x1)) → c72(SEL(ok(nil), proper(x1)), PROPER(x1))
PROPER(afterNth(x0, natsFrom(z0))) → c73(AFTERNTH(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(afterNth(x0, cons(z0, z1))) → c73(AFTERNTH(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(afterNth(x0, s(z0))) → c73(AFTERNTH(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(afterNth(x0, fst(z0))) → c73(AFTERNTH(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(afterNth(x0, pair(z0, z1))) → c73(AFTERNTH(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(afterNth(x0, snd(z0))) → c73(AFTERNTH(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(afterNth(x0, splitAt(z0, z1))) → c73(AFTERNTH(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(afterNth(x0, u(z0, z1, z2, z3))) → c73(AFTERNTH(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(afterNth(x0, head(z0))) → c73(AFTERNTH(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(afterNth(x0, tail(z0))) → c73(AFTERNTH(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(afterNth(x0, sel(z0, z1))) → c73(AFTERNTH(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(afterNth(x0, afterNth(z0, z1))) → c73(AFTERNTH(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(afterNth(x0, take(z0, z1))) → c73(AFTERNTH(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(afterNth(natsFrom(z0), x1)) → c73(AFTERNTH(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(afterNth(cons(z0, z1), x1)) → c73(AFTERNTH(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(afterNth(s(z0), x1)) → c73(AFTERNTH(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(afterNth(fst(z0), x1)) → c73(AFTERNTH(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(afterNth(pair(z0, z1), x1)) → c73(AFTERNTH(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(afterNth(snd(z0), x1)) → c73(AFTERNTH(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(afterNth(splitAt(z0, z1), x1)) → c73(AFTERNTH(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(afterNth(u(z0, z1, z2, z3), x1)) → c73(AFTERNTH(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(afterNth(head(z0), x1)) → c73(AFTERNTH(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(afterNth(tail(z0), x1)) → c73(AFTERNTH(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(afterNth(sel(z0, z1), x1)) → c73(AFTERNTH(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(afterNth(afterNth(z0, z1), x1)) → c73(AFTERNTH(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(afterNth(take(z0, z1), x1)) → c73(AFTERNTH(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(afterNth(x0, 0)) → c73(AFTERNTH(proper(x0), ok(0)), PROPER(x0))
PROPER(afterNth(x0, nil)) → c73(AFTERNTH(proper(x0), ok(nil)), PROPER(x0))
PROPER(afterNth(0, x1)) → c73(AFTERNTH(ok(0), proper(x1)), PROPER(x1))
PROPER(afterNth(nil, x1)) → c73(AFTERNTH(ok(nil), proper(x1)), PROPER(x1))
PROPER(take(x0, natsFrom(z0))) → c74(TAKE(proper(x0), natsFrom(proper(z0))), PROPER(x0), PROPER(natsFrom(z0)))
PROPER(take(x0, cons(z0, z1))) → c74(TAKE(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(take(x0, s(z0))) → c74(TAKE(proper(x0), s(proper(z0))), PROPER(x0), PROPER(s(z0)))
PROPER(take(x0, fst(z0))) → c74(TAKE(proper(x0), fst(proper(z0))), PROPER(x0), PROPER(fst(z0)))
PROPER(take(x0, pair(z0, z1))) → c74(TAKE(proper(x0), pair(proper(z0), proper(z1))), PROPER(x0), PROPER(pair(z0, z1)))
PROPER(take(x0, snd(z0))) → c74(TAKE(proper(x0), snd(proper(z0))), PROPER(x0), PROPER(snd(z0)))
PROPER(take(x0, splitAt(z0, z1))) → c74(TAKE(proper(x0), splitAt(proper(z0), proper(z1))), PROPER(x0), PROPER(splitAt(z0, z1)))
PROPER(take(x0, u(z0, z1, z2, z3))) → c74(TAKE(proper(x0), u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(x0), PROPER(u(z0, z1, z2, z3)))
PROPER(take(x0, head(z0))) → c74(TAKE(proper(x0), head(proper(z0))), PROPER(x0), PROPER(head(z0)))
PROPER(take(x0, tail(z0))) → c74(TAKE(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(take(x0, sel(z0, z1))) → c74(TAKE(proper(x0), sel(proper(z0), proper(z1))), PROPER(x0), PROPER(sel(z0, z1)))
PROPER(take(x0, afterNth(z0, z1))) → c74(TAKE(proper(x0), afterNth(proper(z0), proper(z1))), PROPER(x0), PROPER(afterNth(z0, z1)))
PROPER(take(x0, take(z0, z1))) → c74(TAKE(proper(x0), take(proper(z0), proper(z1))), PROPER(x0), PROPER(take(z0, z1)))
PROPER(take(natsFrom(z0), x1)) → c74(TAKE(natsFrom(proper(z0)), proper(x1)), PROPER(natsFrom(z0)), PROPER(x1))
PROPER(take(cons(z0, z1), x1)) → c74(TAKE(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(take(s(z0), x1)) → c74(TAKE(s(proper(z0)), proper(x1)), PROPER(s(z0)), PROPER(x1))
PROPER(take(fst(z0), x1)) → c74(TAKE(fst(proper(z0)), proper(x1)), PROPER(fst(z0)), PROPER(x1))
PROPER(take(pair(z0, z1), x1)) → c74(TAKE(pair(proper(z0), proper(z1)), proper(x1)), PROPER(pair(z0, z1)), PROPER(x1))
PROPER(take(snd(z0), x1)) → c74(TAKE(snd(proper(z0)), proper(x1)), PROPER(snd(z0)), PROPER(x1))
PROPER(take(splitAt(z0, z1), x1)) → c74(TAKE(splitAt(proper(z0), proper(z1)), proper(x1)), PROPER(splitAt(z0, z1)), PROPER(x1))
PROPER(take(u(z0, z1, z2, z3), x1)) → c74(TAKE(u(proper(z0), proper(z1), proper(z2), proper(z3)), proper(x1)), PROPER(u(z0, z1, z2, z3)), PROPER(x1))
PROPER(take(head(z0), x1)) → c74(TAKE(head(proper(z0)), proper(x1)), PROPER(head(z0)), PROPER(x1))
PROPER(take(tail(z0), x1)) → c74(TAKE(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(take(sel(z0, z1), x1)) → c74(TAKE(sel(proper(z0), proper(z1)), proper(x1)), PROPER(sel(z0, z1)), PROPER(x1))
PROPER(take(afterNth(z0, z1), x1)) → c74(TAKE(afterNth(proper(z0), proper(z1)), proper(x1)), PROPER(afterNth(z0, z1)), PROPER(x1))
PROPER(take(take(z0, z1), x1)) → c74(TAKE(take(proper(z0), proper(z1)), proper(x1)), PROPER(take(z0, z1)), PROPER(x1))
PROPER(take(x0, 0)) → c74(TAKE(proper(x0), ok(0)), PROPER(x0))
PROPER(take(x0, nil)) → c74(TAKE(proper(x0), ok(nil)), PROPER(x0))
PROPER(take(0, x1)) → c74(TAKE(ok(0), proper(x1)), PROPER(x1))
PROPER(take(nil, x1)) → c74(TAKE(ok(nil), proper(x1)), PROPER(x1))
TOP(mark(natsFrom(z0))) → c75(TOP(natsFrom(proper(z0))), PROPER(natsFrom(z0)))
TOP(mark(cons(z0, z1))) → c75(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(s(z0))) → c75(TOP(s(proper(z0))), PROPER(s(z0)))
TOP(mark(fst(z0))) → c75(TOP(fst(proper(z0))), PROPER(fst(z0)))
TOP(mark(pair(z0, z1))) → c75(TOP(pair(proper(z0), proper(z1))), PROPER(pair(z0, z1)))
TOP(mark(snd(z0))) → c75(TOP(snd(proper(z0))), PROPER(snd(z0)))
TOP(mark(splitAt(z0, z1))) → c75(TOP(splitAt(proper(z0), proper(z1))), PROPER(splitAt(z0, z1)))
TOP(mark(u(z0, z1, z2, z3))) → c75(TOP(u(proper(z0), proper(z1), proper(z2), proper(z3))), PROPER(u(z0, z1, z2, z3)))
TOP(mark(head(z0))) → c75(TOP(head(proper(z0))), PROPER(head(z0)))
TOP(mark(tail(z0))) → c75(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(sel(z0, z1))) → c75(TOP(sel(proper(z0), proper(z1))), PROPER(sel(z0, z1)))
TOP(mark(afterNth(z0, z1))) → c75(TOP(afterNth(proper(z0), proper(z1))), PROPER(afterNth(z0, z1)))
TOP(mark(take(z0, z1))) → c75(TOP(take(proper(z0), proper(z1))), PROPER(take(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(mark(cons(z0, natsFrom(s(z0))))), ACTIVE(natsFrom(z0)))
TOP(ok(fst(pair(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(fst(pair(z0, z1))))
TOP(ok(snd(pair(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(snd(pair(z0, z1))))
TOP(ok(splitAt(0, z0))) → c76(TOP(mark(pair(nil, z0))), ACTIVE(splitAt(0, z0)))
TOP(ok(splitAt(s(z0), cons(z1, z2)))) → c76(TOP(mark(u(splitAt(z0, z2), z0, z1, z2))), ACTIVE(splitAt(s(z0), cons(z1, z2))))
TOP(ok(u(pair(z0, z1), z2, z3, z4))) → c76(TOP(mark(pair(cons(z3, z0), z1))), ACTIVE(u(pair(z0, z1), z2, z3, z4)))
TOP(ok(head(cons(z0, z1)))) → c76(TOP(mark(z0)), ACTIVE(head(cons(z0, z1))))
TOP(ok(tail(cons(z0, z1)))) → c76(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(sel(z0, z1))) → c76(TOP(mark(head(afterNth(z0, z1)))), ACTIVE(sel(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(mark(fst(splitAt(z0, z1)))), ACTIVE(take(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(mark(snd(splitAt(z0, z1)))), ACTIVE(afterNth(z0, z1)))
TOP(ok(natsFrom(z0))) → c76(TOP(natsFrom(active(z0))), ACTIVE(natsFrom(z0)))
TOP(ok(cons(z0, z1))) → c76(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(s(z0))) → c76(TOP(s(active(z0))), ACTIVE(s(z0)))
TOP(ok(fst(z0))) → c76(TOP(fst(active(z0))), ACTIVE(fst(z0)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(active(z0), z1)), ACTIVE(pair(z0, z1)))
TOP(ok(pair(z0, z1))) → c76(TOP(pair(z0, active(z1))), ACTIVE(pair(z0, z1)))
TOP(ok(snd(z0))) → c76(TOP(snd(active(z0))), ACTIVE(snd(z0)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(active(z0), z1)), ACTIVE(splitAt(z0, z1)))
TOP(ok(splitAt(z0, z1))) → c76(TOP(splitAt(z0, active(z1))), ACTIVE(splitAt(z0, z1)))
TOP(ok(u(z0, z1, z2, z3))) → c76(TOP(u(active(z0), z1, z2, z3)), ACTIVE(u(z0, z1, z2, z3)))
TOP(ok(head(z0))) → c76(TOP(head(active(z0))), ACTIVE(head(z0)))
TOP(ok(tail(z0))) → c76(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(active(z0), z1)), ACTIVE(sel(z0, z1)))
TOP(ok(sel(z0, z1))) → c76(TOP(sel(z0, active(z1))), ACTIVE(sel(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(active(z0), z1)), ACTIVE(afterNth(z0, z1)))
TOP(ok(afterNth(z0, z1))) → c76(TOP(afterNth(z0, active(z1))), ACTIVE(afterNth(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(active(z0), z1)), ACTIVE(take(z0, z1)))
TOP(ok(take(z0, z1))) → c76(TOP(take(z0, active(z1))), ACTIVE(take(z0, z1)))

(88) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:none
Defined Rule Symbols:

active, u, splitAt, pair, cons, natsFrom, s, fst, snd, head, tail, sel, afterNth, take, proper

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(89) CdtUsableRulesProof (EQUIVALENT transformation)

The following rules are not usable and were removed:

active(natsFrom(z0)) → mark(cons(z0, natsFrom(s(z0))))
active(fst(pair(z0, z1))) → mark(z0)
active(snd(pair(z0, z1))) → mark(z1)
active(splitAt(0, z0)) → mark(pair(nil, z0))
active(splitAt(s(z0), cons(z1, z2))) → mark(u(splitAt(z0, z2), z0, z1, z2))
active(u(pair(z0, z1), z2, z3, z4)) → mark(pair(cons(z3, z0), z1))
active(head(cons(z0, z1))) → mark(z0)
active(tail(cons(z0, z1))) → mark(z1)
active(sel(z0, z1)) → mark(head(afterNth(z0, z1)))
active(take(z0, z1)) → mark(fst(splitAt(z0, z1)))
active(afterNth(z0, z1)) → mark(snd(splitAt(z0, z1)))
active(natsFrom(z0)) → natsFrom(active(z0))
active(cons(z0, z1)) → cons(active(z0), z1)
active(s(z0)) → s(active(z0))
active(fst(z0)) → fst(active(z0))
active(pair(z0, z1)) → pair(active(z0), z1)
active(pair(z0, z1)) → pair(z0, active(z1))
active(snd(z0)) → snd(active(z0))
active(splitAt(z0, z1)) → splitAt(active(z0), z1)
active(splitAt(z0, z1)) → splitAt(z0, active(z1))
active(u(z0, z1, z2, z3)) → u(active(z0), z1, z2, z3)
active(head(z0)) → head(active(z0))
active(tail(z0)) → tail(active(z0))
active(sel(z0, z1)) → sel(active(z0), z1)
active(sel(z0, z1)) → sel(z0, active(z1))
active(afterNth(z0, z1)) → afterNth(active(z0), z1)
active(afterNth(z0, z1)) → afterNth(z0, active(z1))
active(take(z0, z1)) → take(active(z0), z1)
active(take(z0, z1)) → take(z0, active(z1))
u(mark(z0), z1, z2, z3) → mark(u(z0, z1, z2, z3))
u(ok(z0), ok(z1), ok(z2), ok(z3)) → ok(u(z0, z1, z2, z3))
splitAt(z0, mark(z1)) → mark(splitAt(z0, z1))
splitAt(mark(z0), z1) → mark(splitAt(z0, z1))
splitAt(ok(z0), ok(z1)) → ok(splitAt(z0, z1))
pair(mark(z0), z1) → mark(pair(z0, z1))
pair(ok(z0), ok(z1)) → ok(pair(z0, z1))
pair(z0, mark(z1)) → mark(pair(z0, z1))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
natsFrom(mark(z0)) → mark(natsFrom(z0))
natsFrom(ok(z0)) → ok(natsFrom(z0))
s(mark(z0)) → mark(s(z0))
s(ok(z0)) → ok(s(z0))
fst(mark(z0)) → mark(fst(z0))
fst(ok(z0)) → ok(fst(z0))
snd(mark(z0)) → mark(snd(z0))
snd(ok(z0)) → ok(snd(z0))
head(mark(z0)) → mark(head(z0))
head(ok(z0)) → ok(head(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
sel(mark(z0), z1) → mark(sel(z0, z1))
sel(ok(z0), ok(z1)) → ok(sel(z0, z1))
sel(z0, mark(z1)) → mark(sel(z0, z1))
afterNth(mark(z0), z1) → mark(afterNth(z0, z1))
afterNth(ok(z0), ok(z1)) → ok(afterNth(z0, z1))
afterNth(z0, mark(z1)) → mark(afterNth(z0, z1))
take(mark(z0), z1) → mark(take(z0, z1))
take(ok(z0), ok(z1)) → ok(take(z0, z1))
take(z0, mark(z1)) → mark(take(z0, z1))
proper(natsFrom(z0)) → natsFrom(proper(z0))
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(s(z0)) → s(proper(z0))
proper(fst(z0)) → fst(proper(z0))
proper(pair(z0, z1)) → pair(proper(z0), proper(z1))
proper(snd(z0)) → snd(proper(z0))
proper(splitAt(z0, z1)) → splitAt(proper(z0), proper(z1))
proper(0) → ok(0)
proper(nil) → ok(nil)
proper(u(z0, z1, z2, z3)) → u(proper(z0), proper(z1), proper(z2), proper(z3))
proper(head(z0)) → head(proper(z0))
proper(tail(z0)) → tail(proper(z0))
proper(sel(z0, z1)) → sel(proper(z0), proper(z1))
proper(afterNth(z0, z1)) → afterNth(proper(z0), proper(z1))
proper(take(z0, z1)) → take(proper(z0), proper(z1))

(90) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:none
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(91) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = 0   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = x1   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = 0   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [2] + x1   
POL(ok(x1)) = [4] + x1   

(92) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(93) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = 0   
POL(CONS(x1, x2)) = [4]x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = 0   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = 0   
POL(ok(x1)) = [2] + x1   

(94) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(95) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = x2   
POL(CONS(x1, x2)) = [2]x1 + [2]x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = x1   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = 0   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [4] + x1   
POL(ok(x1)) = [1] + x1   

(96) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(97) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = 0   
POL(CONS(x1, x2)) = [2]x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = [2]x2   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [3]   
POL(ok(x1)) = [2] + x1   

(98) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(99) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [2]x2   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = [2]x1   
POL(PAIR(x1, x2)) = [2]x2   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = [3]x2 + [3]x3   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = x1   

(100) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(101) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = 0   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = [4]x1   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [4]x2   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [4]x1   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = [2]x2 + [4]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [4] + x1   
POL(ok(x1)) = x1   

(102) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(ok(z0)) → c36(FST(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(103) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x2   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [4]x1   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = x2   
POL(U(x1, x2, x3, x4)) = [2]x2   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = [2] + x1   

(104) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(ok(z0)) → c36(FST(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(105) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x1 + [4]x2   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = [2]x1   
POL(NATSFROM(x1)) = [4]x1   
POL(PAIR(x1, x2)) = [2]x1   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = [2]x2   
POL(U(x1, x2, x3, x4)) = [4]x3 + x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [2] + x1   
POL(ok(x1)) = x1   

(106) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(ok(z0)) → c36(FST(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(107) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = 0   
POL(CONS(x1, x2)) = x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = x1   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = x1   
POL(TAKE(x1, x2)) = [2]x2   
POL(U(x1, x2, x3, x4)) = 0   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = [1] + x1   

(108) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(ok(z0)) → c36(FST(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(109) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x2   
POL(CONS(x1, x2)) = [2]x2   
POL(FST(x1)) = [4]x1   
POL(HEAD(x1)) = [4]x1   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [2]x1   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [3]x1 + [4]x2   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = [3]x1   
POL(TAKE(x1, x2)) = [4]x2   
POL(U(x1, x2, x3, x4)) = [4]x2 + [3]x3 + [2]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = [4] + x1   

(110) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(111) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [2]x1 + [4]x2   
POL(CONS(x1, x2)) = [2]x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [4]x2   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = [3]x1   
POL(TAKE(x1, x2)) = [4]x1 + [2]x2   
POL(U(x1, x2, x3, x4)) = x3 + [2]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [2] + x1   
POL(ok(x1)) = [3] + x1   

(112) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(113) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SND(ok(z0)) → c41(SND(z0))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x2   
POL(CONS(x1, x2)) = x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [4]x1   
POL(SND(x1)) = [4]x1   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = [4]x1   
POL(TAKE(x1, x2)) = [4]x1 + [4]x2   
POL(U(x1, x2, x3, x4)) = 0   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = x1   
POL(ok(x1)) = [4] + x1   

(114) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(115) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [2]x1 + [2]x2   
POL(CONS(x1, x2)) = [3]x1   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = [2]x1   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [4]x1   
POL(S(x1)) = [4]x1   
POL(SEL(x1, x2)) = [2]x1 + [4]x2   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = [4]x1   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = [2]x1   
POL(U(x1, x2, x3, x4)) = [3]x2 + [2]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = x1   
POL(ok(x1)) = [4] + x1   

(116) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(117) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x2   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [2]x1   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = x2   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = 0   
POL(U(x1, x2, x3, x4)) = [2]x3   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = x1   

(118) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(119) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SND(mark(z0)) → c40(SND(z0))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x1 + [3]x2   
POL(CONS(x1, x2)) = [2]x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = [2]x1   
POL(PAIR(x1, x2)) = 0   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [3]x1 + [4]x2   
POL(SND(x1)) = x1   
POL(SPLITAT(x1, x2)) = 0   
POL(TAIL(x1)) = x1   
POL(TAKE(x1, x2)) = [4]x1 + [2]x2   
POL(U(x1, x2, x3, x4)) = [2]x3 + [3]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = x1   

(120) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SND(mark(z0)) → c40(SND(z0))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(121) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x1   
POL(CONS(x1, x2)) = 0   
POL(FST(x1)) = [3]x1   
POL(HEAD(x1)) = x1   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = x2   
POL(S(x1)) = 0   
POL(SEL(x1, x2)) = [2]x1   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = x1 + [4]x2   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = [4]x1 + [3]x2   
POL(U(x1, x2, x3, x4)) = x2 + [3]x4   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [4] + x1   
POL(ok(x1)) = x1   

(122) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

S(mark(z0)) → c33(S(z0))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(123) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

S(mark(z0)) → c33(S(z0))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [3]x1   
POL(CONS(x1, x2)) = [2]x2   
POL(FST(x1)) = [3]x1   
POL(HEAD(x1)) = 0   
POL(NATSFROM(x1)) = [2]x1   
POL(PAIR(x1, x2)) = [4]x2   
POL(S(x1)) = x1   
POL(SEL(x1, x2)) = 0   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = [3]x1 + [3]x2   
POL(TAIL(x1)) = [4]x1   
POL(TAKE(x1, x2)) = [2]x2   
POL(U(x1, x2, x3, x4)) = [3]x2 + [2]x3   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = x1   

(124) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:

U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
S(mark(z0)) → c33(S(z0))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(125) CdtRuleRemovalProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
We considered the (Usable) Rules:none
And the Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(AFTERNTH(x1, x2)) = [4]x1   
POL(CONS(x1, x2)) = [2]x1 + x2   
POL(FST(x1)) = 0   
POL(HEAD(x1)) = [4]x1   
POL(NATSFROM(x1)) = 0   
POL(PAIR(x1, x2)) = [2]x2   
POL(S(x1)) = [3]x1   
POL(SEL(x1, x2)) = [3]x2   
POL(SND(x1)) = 0   
POL(SPLITAT(x1, x2)) = [4]x1 + [3]x2   
POL(TAIL(x1)) = 0   
POL(TAKE(x1, x2)) = [4]x1 + [4]x2   
POL(U(x1, x2, x3, x4)) = [4]x1 + [2]x3   
POL(c29(x1)) = x1   
POL(c30(x1)) = x1   
POL(c31(x1)) = x1   
POL(c32(x1)) = x1   
POL(c33(x1)) = x1   
POL(c34(x1)) = x1   
POL(c35(x1)) = x1   
POL(c36(x1)) = x1   
POL(c37(x1)) = x1   
POL(c38(x1)) = x1   
POL(c39(x1)) = x1   
POL(c40(x1)) = x1   
POL(c41(x1)) = x1   
POL(c42(x1)) = x1   
POL(c43(x1)) = x1   
POL(c44(x1)) = x1   
POL(c45(x1)) = x1   
POL(c46(x1)) = x1   
POL(c47(x1)) = x1   
POL(c48(x1)) = x1   
POL(c49(x1)) = x1   
POL(c50(x1)) = x1   
POL(c51(x1)) = x1   
POL(c52(x1)) = x1   
POL(c53(x1)) = x1   
POL(c54(x1)) = x1   
POL(c55(x1)) = x1   
POL(c56(x1)) = x1   
POL(c57(x1)) = x1   
POL(c58(x1)) = x1   
POL(c59(x1)) = x1   
POL(mark(x1)) = [1] + x1   
POL(ok(x1)) = x1   

(126) Obligation:

Complexity Dependency Tuples Problem
Rules:none
Tuples:

NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
S(mark(z0)) → c33(S(z0))
S(ok(z0)) → c34(S(z0))
FST(mark(z0)) → c35(FST(z0))
FST(ok(z0)) → c36(FST(z0))
PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SND(ok(z0)) → c41(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
HEAD(mark(z0)) → c47(HEAD(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
S tuples:none
K tuples:

PAIR(mark(z0), z1) → c37(PAIR(z0, z1))
PAIR(ok(z0), ok(z1)) → c39(PAIR(z0, z1))
CONS(ok(z0), ok(z1)) → c32(CONS(z0, z1))
NATSFROM(mark(z0)) → c29(NATSFROM(z0))
NATSFROM(ok(z0)) → c30(NATSFROM(z0))
CONS(mark(z0), z1) → c31(CONS(z0, z1))
AFTERNTH(z0, mark(z1)) → c55(AFTERNTH(z0, z1))
AFTERNTH(ok(z0), ok(z1)) → c56(AFTERNTH(z0, z1))
U(ok(z0), ok(z1), ok(z2), ok(z3)) → c46(U(z0, z1, z2, z3))
PAIR(z0, mark(z1)) → c38(PAIR(z0, z1))
FST(mark(z0)) → c35(FST(z0))
SEL(mark(z0), z1) → c51(SEL(z0, z1))
TAKE(z0, mark(z1)) → c58(TAKE(z0, z1))
TAKE(ok(z0), ok(z1)) → c59(TAKE(z0, z1))
HEAD(mark(z0)) → c47(HEAD(z0))
AFTERNTH(mark(z0), z1) → c54(AFTERNTH(z0, z1))
TAIL(mark(z0)) → c49(TAIL(z0))
TAIL(ok(z0)) → c50(TAIL(z0))
SEL(ok(z0), ok(z1)) → c53(SEL(z0, z1))
FST(ok(z0)) → c36(FST(z0))
HEAD(ok(z0)) → c48(HEAD(z0))
SEL(z0, mark(z1)) → c52(SEL(z0, z1))
TAKE(mark(z0), z1) → c57(TAKE(z0, z1))
SND(ok(z0)) → c41(SND(z0))
S(ok(z0)) → c34(S(z0))
SPLITAT(ok(z0), ok(z1)) → c44(SPLITAT(z0, z1))
SPLITAT(z0, mark(z1)) → c43(SPLITAT(z0, z1))
SND(mark(z0)) → c40(SND(z0))
SPLITAT(mark(z0), z1) → c42(SPLITAT(z0, z1))
S(mark(z0)) → c33(S(z0))
U(mark(z0), z1, z2, z3) → c45(U(z0, z1, z2, z3))
Defined Rule Symbols:none

Defined Pair Symbols:

NATSFROM, CONS, S, FST, PAIR, SND, SPLITAT, U, HEAD, TAIL, SEL, AFTERNTH, TAKE

Compound Symbols:

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

(127) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)

The set S is empty

(128) BOUNDS(O(1), O(1))