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


Renamed function symbols to avoid clashes with predefined symbol.


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


Infered types.


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'


Heuristically decided to analyse the following defined symbols:
active', cons', natsFrom', s', pair', u', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
cons' < active'
natsFrom' < active'
s' < active'
pair' < active'
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
cons' < proper'
natsFrom' < proper'
s' < proper'
pair' < proper'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
cons', active', natsFrom', s', pair', u', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
cons' < active'
natsFrom' < active'
s' < active'
pair' < active'
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
cons' < proper'
natsFrom' < proper'
s' < proper'
pair' < proper'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)

Induction Base:
cons'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
cons'(_gen_mark':0':nil':ok'3(+(1, +(_$n6, 1))), _gen_mark':0':nil':ok'3(_b610)) →RΩ(1)
mark'(cons'(_gen_mark':0':nil':ok'3(+(1, _$n6)), _gen_mark':0':nil':ok'3(_b610))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
natsFrom', active', s', pair', u', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
natsFrom' < active'
s' < active'
pair' < active'
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
natsFrom' < proper'
s' < proper'
pair' < proper'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)

Induction Base:
natsFrom'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
natsFrom'(_gen_mark':0':nil':ok'3(+(1, +(_$n4356, 1)))) →RΩ(1)
mark'(natsFrom'(_gen_mark':0':nil':ok'3(+(1, _$n4356)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
s', active', pair', u', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
s' < active'
pair' < active'
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
s' < proper'
pair' < proper'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)

Induction Base:
s'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
s'(_gen_mark':0':nil':ok'3(+(1, +(_$n7327, 1)))) →RΩ(1)
mark'(s'(_gen_mark':0':nil':ok'3(+(1, _$n7327)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
pair', active', u', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
pair' < active'
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
pair' < proper'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)

Induction Base:
pair'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
pair'(_gen_mark':0':nil':ok'3(+(1, +(_$n10422, 1))), _gen_mark':0':nil':ok'3(_b11998)) →RΩ(1)
mark'(pair'(_gen_mark':0':nil':ok'3(+(1, _$n10422)), _gen_mark':0':nil':ok'3(_b11998))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
u', active', splitAt', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
u' < active'
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
u' < proper'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)

Induction Base:
u'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d))

Induction Step:
u'(_gen_mark':0':nil':ok'3(+(1, +(_$n15841, 1))), _gen_mark':0':nil':ok'3(_b19637), _gen_mark':0':nil':ok'3(_c19638), _gen_mark':0':nil':ok'3(_d19639)) →RΩ(1)
mark'(u'(_gen_mark':0':nil':ok'3(+(1, _$n15841)), _gen_mark':0':nil':ok'3(_b19637), _gen_mark':0':nil':ok'3(_c19638), _gen_mark':0':nil':ok'3(_d19639))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
splitAt', active', head', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
splitAt' < active'
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
splitAt' < proper'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)

Induction Base:
splitAt'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
splitAt'(_gen_mark':0':nil':ok'3(+(1, +(_$n26181, 1))), _gen_mark':0':nil':ok'3(_b28621)) →RΩ(1)
mark'(splitAt'(_gen_mark':0':nil':ok'3(+(1, _$n26181)), _gen_mark':0':nil':ok'3(_b28621))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
head', active', afterNth', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
head' < active'
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
head' < proper'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)

Induction Base:
head'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
head'(_gen_mark':0':nil':ok'3(+(1, +(_$n32590, 1)))) →RΩ(1)
mark'(head'(_gen_mark':0':nil':ok'3(+(1, _$n32590)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
afterNth', active', fst', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
afterNth' < active'
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
afterNth' < proper'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)

Induction Base:
afterNth'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
afterNth'(_gen_mark':0':nil':ok'3(+(1, +(_$n36516, 1))), _gen_mark':0':nil':ok'3(_b39496)) →RΩ(1)
mark'(afterNth'(_gen_mark':0':nil':ok'3(+(1, _$n36516)), _gen_mark':0':nil':ok'3(_b39496))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
fst', active', snd', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
fst' < active'
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
fst' < proper'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)

Induction Base:
fst'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
fst'(_gen_mark':0':nil':ok'3(+(1, +(_$n43534, 1)))) →RΩ(1)
mark'(fst'(_gen_mark':0':nil':ok'3(+(1, _$n43534)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
snd', active', tail', sel', take', proper', top'

They will be analysed ascendingly in the following order:
snd' < active'
tail' < active'
sel' < active'
take' < active'
active' < top'
snd' < proper'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
snd'(_gen_mark':0':nil':ok'3(+(1, _n47774))) → _*4, rt ∈ Ω(n47774)

Induction Base:
snd'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
snd'(_gen_mark':0':nil':ok'3(+(1, +(_$n47775, 1)))) →RΩ(1)
mark'(snd'(_gen_mark':0':nil':ok'3(+(1, _$n47775)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)
snd'(_gen_mark':0':nil':ok'3(+(1, _n47774))) → _*4, rt ∈ Ω(n47774)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
tail', active', sel', take', proper', top'

They will be analysed ascendingly in the following order:
tail' < active'
sel' < active'
take' < active'
active' < top'
tail' < proper'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
tail'(_gen_mark':0':nil':ok'3(+(1, _n52139))) → _*4, rt ∈ Ω(n52139)

Induction Base:
tail'(_gen_mark':0':nil':ok'3(+(1, 0)))

Induction Step:
tail'(_gen_mark':0':nil':ok'3(+(1, +(_$n52140, 1)))) →RΩ(1)
mark'(tail'(_gen_mark':0':nil':ok'3(+(1, _$n52140)))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)
snd'(_gen_mark':0':nil':ok'3(+(1, _n47774))) → _*4, rt ∈ Ω(n47774)
tail'(_gen_mark':0':nil':ok'3(+(1, _n52139))) → _*4, rt ∈ Ω(n52139)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
sel', active', take', proper', top'

They will be analysed ascendingly in the following order:
sel' < active'
take' < active'
active' < top'
sel' < proper'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
sel'(_gen_mark':0':nil':ok'3(+(1, _n56628)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n56628)

Induction Base:
sel'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
sel'(_gen_mark':0':nil':ok'3(+(1, +(_$n56629, 1))), _gen_mark':0':nil':ok'3(_b60581)) →RΩ(1)
mark'(sel'(_gen_mark':0':nil':ok'3(+(1, _$n56629)), _gen_mark':0':nil':ok'3(_b60581))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)
snd'(_gen_mark':0':nil':ok'3(+(1, _n47774))) → _*4, rt ∈ Ω(n47774)
tail'(_gen_mark':0':nil':ok'3(+(1, _n52139))) → _*4, rt ∈ Ω(n52139)
sel'(_gen_mark':0':nil':ok'3(+(1, _n56628)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n56628)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
take', active', proper', top'

They will be analysed ascendingly in the following order:
take' < active'
active' < top'
take' < proper'
proper' < top'


Proved the following rewrite lemma:
take'(_gen_mark':0':nil':ok'3(+(1, _n64737)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n64737)

Induction Base:
take'(_gen_mark':0':nil':ok'3(+(1, 0)), _gen_mark':0':nil':ok'3(b))

Induction Step:
take'(_gen_mark':0':nil':ok'3(+(1, +(_$n64738, 1))), _gen_mark':0':nil':ok'3(_b69014)) →RΩ(1)
mark'(take'(_gen_mark':0':nil':ok'3(+(1, _$n64738)), _gen_mark':0':nil':ok'3(_b69014))) →IH
mark'(_*4)

We have rt ∈ Ω(n) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).


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))

Types:
active' :: mark':0':nil':ok' → mark':0':nil':ok'
natsFrom' :: mark':0':nil':ok' → mark':0':nil':ok'
mark' :: mark':0':nil':ok' → mark':0':nil':ok'
cons' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
s' :: mark':0':nil':ok' → mark':0':nil':ok'
fst' :: mark':0':nil':ok' → mark':0':nil':ok'
pair' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
snd' :: mark':0':nil':ok' → mark':0':nil':ok'
splitAt' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
0' :: mark':0':nil':ok'
nil' :: mark':0':nil':ok'
u' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
head' :: mark':0':nil':ok' → mark':0':nil':ok'
tail' :: mark':0':nil':ok' → mark':0':nil':ok'
sel' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
afterNth' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
take' :: mark':0':nil':ok' → mark':0':nil':ok' → mark':0':nil':ok'
proper' :: mark':0':nil':ok' → mark':0':nil':ok'
ok' :: mark':0':nil':ok' → mark':0':nil':ok'
top' :: mark':0':nil':ok' → top'
_hole_mark':0':nil':ok'1 :: mark':0':nil':ok'
_hole_top'2 :: top'
_gen_mark':0':nil':ok'3 :: Nat → mark':0':nil':ok'

Lemmas:
cons'(_gen_mark':0':nil':ok'3(+(1, _n5)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n5)
natsFrom'(_gen_mark':0':nil':ok'3(+(1, _n4355))) → _*4, rt ∈ Ω(n4355)
s'(_gen_mark':0':nil':ok'3(+(1, _n7326))) → _*4, rt ∈ Ω(n7326)
pair'(_gen_mark':0':nil':ok'3(+(1, _n10421)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n10421)
u'(_gen_mark':0':nil':ok'3(+(1, _n15840)), _gen_mark':0':nil':ok'3(b), _gen_mark':0':nil':ok'3(c), _gen_mark':0':nil':ok'3(d)) → _*4, rt ∈ Ω(n15840)
splitAt'(_gen_mark':0':nil':ok'3(+(1, _n26180)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n26180)
head'(_gen_mark':0':nil':ok'3(+(1, _n32589))) → _*4, rt ∈ Ω(n32589)
afterNth'(_gen_mark':0':nil':ok'3(+(1, _n36515)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n36515)
fst'(_gen_mark':0':nil':ok'3(+(1, _n43533))) → _*4, rt ∈ Ω(n43533)
snd'(_gen_mark':0':nil':ok'3(+(1, _n47774))) → _*4, rt ∈ Ω(n47774)
tail'(_gen_mark':0':nil':ok'3(+(1, _n52139))) → _*4, rt ∈ Ω(n52139)
sel'(_gen_mark':0':nil':ok'3(+(1, _n56628)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n56628)
take'(_gen_mark':0':nil':ok'3(+(1, _n64737)), _gen_mark':0':nil':ok'3(b)) → _*4, rt ∈ Ω(n64737)

Generator Equations:
_gen_mark':0':nil':ok'3(0) ⇔ 0'
_gen_mark':0':nil':ok'3(+(x, 1)) ⇔ mark'(_gen_mark':0':nil':ok'3(x))

The following defined symbols remain to be analysed:
active', proper', top'

They will be analysed ascendingly in the following order:
active' < top'
proper' < top'