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

active(U101(tt, N, XS)) → mark(fst(splitAt(N, XS)))
active(U11(tt, N, XS)) → mark(snd(splitAt(N, XS)))
active(U21(tt, X)) → mark(X)
active(U31(tt, N)) → mark(N)
active(U41(tt, N)) → mark(cons(N, natsFrom(s(N))))
active(U51(tt, N, XS)) → mark(head(afterNth(N, XS)))
active(U61(tt, Y)) → mark(Y)
active(U71(tt, XS)) → mark(pair(nil, XS))
active(U81(tt, N, X, XS)) → mark(U82(splitAt(N, XS), X))
active(U82(pair(YS, ZS), X)) → mark(pair(cons(X, YS), ZS))
active(U91(tt, XS)) → mark(XS)
active(afterNth(N, XS)) → mark(U11(and(isNatural(N), isLNat(XS)), N, XS))
active(and(tt, X)) → mark(X)
active(fst(pair(X, Y))) → mark(U21(and(isLNat(X), isLNat(Y)), X))
active(head(cons(N, XS))) → mark(U31(and(isNatural(N), isLNat(XS)), N))
active(isLNat(nil)) → mark(tt)
active(isLNat(afterNth(V1, V2))) → mark(and(isNatural(V1), isLNat(V2)))
active(isLNat(cons(V1, V2))) → mark(and(isNatural(V1), isLNat(V2)))
active(isLNat(fst(V1))) → mark(isPLNat(V1))
active(isLNat(natsFrom(V1))) → mark(isNatural(V1))
active(isLNat(snd(V1))) → mark(isPLNat(V1))
active(isLNat(tail(V1))) → mark(isLNat(V1))
active(isLNat(take(V1, V2))) → mark(and(isNatural(V1), isLNat(V2)))
active(isNatural(0)) → mark(tt)
active(isNatural(head(V1))) → mark(isLNat(V1))
active(isNatural(s(V1))) → mark(isNatural(V1))
active(isNatural(sel(V1, V2))) → mark(and(isNatural(V1), isLNat(V2)))
active(isPLNat(pair(V1, V2))) → mark(and(isLNat(V1), isLNat(V2)))
active(isPLNat(splitAt(V1, V2))) → mark(and(isNatural(V1), isLNat(V2)))
active(natsFrom(N)) → mark(U41(isNatural(N), N))
active(sel(N, XS)) → mark(U51(and(isNatural(N), isLNat(XS)), N, XS))
active(snd(pair(X, Y))) → mark(U61(and(isLNat(X), isLNat(Y)), Y))
active(splitAt(0, XS)) → mark(U71(isLNat(XS), XS))
active(splitAt(s(N), cons(X, XS))) → mark(U81(and(isNatural(N), and(isNatural(X), isLNat(XS))), N, X, XS))
active(tail(cons(N, XS))) → mark(U91(and(isNatural(N), isLNat(XS)), XS))
active(take(N, XS)) → mark(U101(and(isNatural(N), isLNat(XS)), N, XS))
active(U101(X1, X2, X3)) → U101(active(X1), X2, X3)
active(fst(X)) → fst(active(X))
active(splitAt(X1, X2)) → splitAt(active(X1), X2)
active(splitAt(X1, X2)) → splitAt(X1, active(X2))
active(U11(X1, X2, X3)) → U11(active(X1), X2, X3)
active(snd(X)) → snd(active(X))
active(U21(X1, X2)) → U21(active(X1), X2)
active(U31(X1, X2)) → U31(active(X1), X2)
active(U41(X1, X2)) → U41(active(X1), X2)
active(cons(X1, X2)) → cons(active(X1), X2)
active(natsFrom(X)) → natsFrom(active(X))
active(s(X)) → s(active(X))
active(U51(X1, X2, X3)) → U51(active(X1), X2, X3)
active(head(X)) → head(active(X))
active(afterNth(X1, X2)) → afterNth(active(X1), X2)
active(afterNth(X1, X2)) → afterNth(X1, active(X2))
active(U61(X1, X2)) → U61(active(X1), X2)
active(U71(X1, X2)) → U71(active(X1), X2)
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(U81(X1, X2, X3, X4)) → U81(active(X1), X2, X3, X4)
active(U82(X1, X2)) → U82(active(X1), X2)
active(U91(X1, X2)) → U91(active(X1), X2)
active(and(X1, X2)) → and(active(X1), X2)
active(tail(X)) → tail(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(sel(X1, X2)) → sel(active(X1), X2)
active(sel(X1, X2)) → sel(X1, active(X2))
U101(mark(X1), X2, X3) → mark(U101(X1, X2, X3))
fst(mark(X)) → mark(fst(X))
splitAt(mark(X1), X2) → mark(splitAt(X1, X2))
splitAt(X1, mark(X2)) → mark(splitAt(X1, X2))
U11(mark(X1), X2, X3) → mark(U11(X1, X2, X3))
snd(mark(X)) → mark(snd(X))
U21(mark(X1), X2) → mark(U21(X1, X2))
U31(mark(X1), X2) → mark(U31(X1, X2))
U41(mark(X1), X2) → mark(U41(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
natsFrom(mark(X)) → mark(natsFrom(X))
s(mark(X)) → mark(s(X))
U51(mark(X1), X2, X3) → mark(U51(X1, X2, X3))
head(mark(X)) → mark(head(X))
afterNth(mark(X1), X2) → mark(afterNth(X1, X2))
afterNth(X1, mark(X2)) → mark(afterNth(X1, X2))
U61(mark(X1), X2) → mark(U61(X1, X2))
U71(mark(X1), X2) → mark(U71(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
U81(mark(X1), X2, X3, X4) → mark(U81(X1, X2, X3, X4))
U82(mark(X1), X2) → mark(U82(X1, X2))
U91(mark(X1), X2) → mark(U91(X1, X2))
and(mark(X1), X2) → mark(and(X1, X2))
tail(mark(X)) → mark(tail(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
sel(mark(X1), X2) → mark(sel(X1, X2))
sel(X1, mark(X2)) → mark(sel(X1, X2))
proper(U101(X1, X2, X3)) → U101(proper(X1), proper(X2), proper(X3))
proper(tt) → ok(tt)
proper(fst(X)) → fst(proper(X))
proper(splitAt(X1, X2)) → splitAt(proper(X1), proper(X2))
proper(U11(X1, X2, X3)) → U11(proper(X1), proper(X2), proper(X3))
proper(snd(X)) → snd(proper(X))
proper(U21(X1, X2)) → U21(proper(X1), proper(X2))
proper(U31(X1, X2)) → U31(proper(X1), proper(X2))
proper(U41(X1, X2)) → U41(proper(X1), proper(X2))
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(natsFrom(X)) → natsFrom(proper(X))
proper(s(X)) → s(proper(X))
proper(U51(X1, X2, X3)) → U51(proper(X1), proper(X2), proper(X3))
proper(head(X)) → head(proper(X))
proper(afterNth(X1, X2)) → afterNth(proper(X1), proper(X2))
proper(U61(X1, X2)) → U61(proper(X1), proper(X2))
proper(U71(X1, X2)) → U71(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(U81(X1, X2, X3, X4)) → U81(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U82(X1, X2)) → U82(proper(X1), proper(X2))
proper(U91(X1, X2)) → U91(proper(X1), proper(X2))
proper(and(X1, X2)) → and(proper(X1), proper(X2))
proper(isNatural(X)) → isNatural(proper(X))
proper(isLNat(X)) → isLNat(proper(X))
proper(isPLNat(X)) → isPLNat(proper(X))
proper(tail(X)) → tail(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(0) → ok(0)
proper(sel(X1, X2)) → sel(proper(X1), proper(X2))
U101(ok(X1), ok(X2), ok(X3)) → ok(U101(X1, X2, X3))
fst(ok(X)) → ok(fst(X))
splitAt(ok(X1), ok(X2)) → ok(splitAt(X1, X2))
U11(ok(X1), ok(X2), ok(X3)) → ok(U11(X1, X2, X3))
snd(ok(X)) → ok(snd(X))
U21(ok(X1), ok(X2)) → ok(U21(X1, X2))
U31(ok(X1), ok(X2)) → ok(U31(X1, X2))
U41(ok(X1), ok(X2)) → ok(U41(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
natsFrom(ok(X)) → ok(natsFrom(X))
s(ok(X)) → ok(s(X))
U51(ok(X1), ok(X2), ok(X3)) → ok(U51(X1, X2, X3))
head(ok(X)) → ok(head(X))
afterNth(ok(X1), ok(X2)) → ok(afterNth(X1, X2))
U61(ok(X1), ok(X2)) → ok(U61(X1, X2))
U71(ok(X1), ok(X2)) → ok(U71(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
U81(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U81(X1, X2, X3, X4))
U82(ok(X1), ok(X2)) → ok(U82(X1, X2))
U91(ok(X1), ok(X2)) → ok(U91(X1, X2))
and(ok(X1), ok(X2)) → ok(and(X1, X2))
isNatural(ok(X)) → ok(isNatural(X))
isLNat(ok(X)) → ok(isLNat(X))
isPLNat(ok(X)) → ok(isPLNat(X))
tail(ok(X)) → ok(tail(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
sel(ok(X1), ok(X2)) → ok(sel(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Rewrite Strategy: INNERMOST


Renamed function symbols to avoid clashes with predefined symbol.


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


active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Rewrite Strategy: INNERMOST


Infered types.


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'


Heuristically decided to analyse the following defined symbols:
active', fst', splitAt', snd', cons', natsFrom', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
fst' < active'
splitAt' < active'
snd' < active'
cons' < active'
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
fst' < proper'
splitAt' < proper'
snd' < proper'
cons' < proper'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

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

The following defined symbols remain to be analysed:
fst', active', splitAt', snd', cons', natsFrom', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
fst' < active'
splitAt' < active'
snd' < active'
cons' < active'
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
fst' < proper'
splitAt' < proper'
snd' < proper'
cons' < proper'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


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

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

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

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)

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

The following defined symbols remain to be analysed:
splitAt', active', snd', cons', natsFrom', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
splitAt' < active'
snd' < active'
cons' < active'
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
splitAt' < proper'
snd' < proper'
cons' < proper'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)

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

Induction Step:
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n5312, 1))), _gen_tt':mark':nil':0':ok'3(_b6348)) →RΩ(1)
mark'(splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _$n5312)), _gen_tt':mark':nil':0':ok'3(_b6348))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)

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

The following defined symbols remain to be analysed:
snd', active', cons', natsFrom', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
snd' < active'
cons' < active'
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
snd' < proper'
cons' < proper'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)

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

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

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)

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

The following defined symbols remain to be analysed:
cons', active', natsFrom', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
cons' < active'
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
cons' < proper'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)

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

Induction Step:
cons'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n19553, 1))), _gen_tt':mark':nil':0':ok'3(_b20913)) →RΩ(1)
mark'(cons'(_gen_tt':mark':nil':0':ok'3(+(1, _$n19553)), _gen_tt':mark':nil':0':ok'3(_b20913))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)

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

The following defined symbols remain to be analysed:
natsFrom', active', s', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
natsFrom' < active'
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
natsFrom' < proper'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)

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

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

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)

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

The following defined symbols remain to be analysed:
s', active', head', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
s' < active'
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
s' < proper'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)

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

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

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)

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

The following defined symbols remain to be analysed:
head', active', afterNth', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
head' < active'
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
head' < proper'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)

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

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

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)

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

The following defined symbols remain to be analysed:
afterNth', active', pair', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
afterNth' < active'
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
afterNth' < proper'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)

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

Induction Step:
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n46743, 1))), _gen_tt':mark':nil':0':ok'3(_b49291)) →RΩ(1)
mark'(afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _$n46743)), _gen_tt':mark':nil':0':ok'3(_b49291))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)

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

The following defined symbols remain to be analysed:
pair', active', U82', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
pair' < active'
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
pair' < proper'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)

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

Induction Step:
pair'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n57063, 1))), _gen_tt':mark':nil':0':ok'3(_b59935)) →RΩ(1)
mark'(pair'(_gen_tt':mark':nil':0':ok'3(+(1, _$n57063)), _gen_tt':mark':nil':0':ok'3(_b59935))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)

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

The following defined symbols remain to be analysed:
U82', active', U11', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
U82' < active'
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
U82' < proper'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)

Induction Base:
U82'(_gen_tt':mark':nil':0':ok'3(+(1, 0)), _gen_tt':mark':nil':0':ok'3(b))

Induction Step:
U82'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n67751, 1))), _gen_tt':mark':nil':0':ok'3(_b70731)) →RΩ(1)
mark'(U82'(_gen_tt':mark':nil':0':ok'3(+(1, _$n67751)), _gen_tt':mark':nil':0':ok'3(_b70731))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)

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

The following defined symbols remain to be analysed:
U11', active', and', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
U11' < active'
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
U11' < proper'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
U11'(_gen_tt':mark':nil':0':ok'3(+(1, _n78587)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c)) → _*4, rt ∈ Ω(n78587)

Induction Base:
U11'(_gen_tt':mark':nil':0':ok'3(+(1, 0)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c))

Induction Step:
U11'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n78588, 1))), _gen_tt':mark':nil':0':ok'3(_b83650), _gen_tt':mark':nil':0':ok'3(_c83651)) →RΩ(1)
mark'(U11'(_gen_tt':mark':nil':0':ok'3(+(1, _$n78588)), _gen_tt':mark':nil':0':ok'3(_b83650), _gen_tt':mark':nil':0':ok'3(_c83651))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)
U11'(_gen_tt':mark':nil':0':ok'3(+(1, _n78587)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c)) → _*4, rt ∈ Ω(n78587)

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

The following defined symbols remain to be analysed:
and', active', isNatural', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
and' < active'
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
and' < proper'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
and'(_gen_tt':mark':nil':0':ok'3(+(1, _n94230)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n94230)

Induction Base:
and'(_gen_tt':mark':nil':0':ok'3(+(1, 0)), _gen_tt':mark':nil':0':ok'3(b))

Induction Step:
and'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n94231, 1))), _gen_tt':mark':nil':0':ok'3(_b97967)) →RΩ(1)
mark'(and'(_gen_tt':mark':nil':0':ok'3(+(1, _$n94231)), _gen_tt':mark':nil':0':ok'3(_b97967))) →IH
mark'(_*4)

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


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)
U11'(_gen_tt':mark':nil':0':ok'3(+(1, _n78587)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c)) → _*4, rt ∈ Ω(n78587)
and'(_gen_tt':mark':nil':0':ok'3(+(1, _n94230)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n94230)

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

The following defined symbols remain to be analysed:
isNatural', active', isLNat', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
isNatural' < active'
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
isNatural' < proper'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Could not prove a rewrite lemma for the defined symbol isNatural'.


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)
U11'(_gen_tt':mark':nil':0':ok'3(+(1, _n78587)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c)) → _*4, rt ∈ Ω(n78587)
and'(_gen_tt':mark':nil':0':ok'3(+(1, _n94230)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n94230)

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

The following defined symbols remain to be analysed:
isLNat', active', U21', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
isLNat' < active'
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
isLNat' < proper'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Could not prove a rewrite lemma for the defined symbol isLNat'.


Rules:
active'(U101'(tt', N, XS)) → mark'(fst'(splitAt'(N, XS)))
active'(U11'(tt', N, XS)) → mark'(snd'(splitAt'(N, XS)))
active'(U21'(tt', X)) → mark'(X)
active'(U31'(tt', N)) → mark'(N)
active'(U41'(tt', N)) → mark'(cons'(N, natsFrom'(s'(N))))
active'(U51'(tt', N, XS)) → mark'(head'(afterNth'(N, XS)))
active'(U61'(tt', Y)) → mark'(Y)
active'(U71'(tt', XS)) → mark'(pair'(nil', XS))
active'(U81'(tt', N, X, XS)) → mark'(U82'(splitAt'(N, XS), X))
active'(U82'(pair'(YS, ZS), X)) → mark'(pair'(cons'(X, YS), ZS))
active'(U91'(tt', XS)) → mark'(XS)
active'(afterNth'(N, XS)) → mark'(U11'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(and'(tt', X)) → mark'(X)
active'(fst'(pair'(X, Y))) → mark'(U21'(and'(isLNat'(X), isLNat'(Y)), X))
active'(head'(cons'(N, XS))) → mark'(U31'(and'(isNatural'(N), isLNat'(XS)), N))
active'(isLNat'(nil')) → mark'(tt')
active'(isLNat'(afterNth'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(cons'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isLNat'(fst'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(natsFrom'(V1))) → mark'(isNatural'(V1))
active'(isLNat'(snd'(V1))) → mark'(isPLNat'(V1))
active'(isLNat'(tail'(V1))) → mark'(isLNat'(V1))
active'(isLNat'(take'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isNatural'(0')) → mark'(tt')
active'(isNatural'(head'(V1))) → mark'(isLNat'(V1))
active'(isNatural'(s'(V1))) → mark'(isNatural'(V1))
active'(isNatural'(sel'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(isPLNat'(pair'(V1, V2))) → mark'(and'(isLNat'(V1), isLNat'(V2)))
active'(isPLNat'(splitAt'(V1, V2))) → mark'(and'(isNatural'(V1), isLNat'(V2)))
active'(natsFrom'(N)) → mark'(U41'(isNatural'(N), N))
active'(sel'(N, XS)) → mark'(U51'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(snd'(pair'(X, Y))) → mark'(U61'(and'(isLNat'(X), isLNat'(Y)), Y))
active'(splitAt'(0', XS)) → mark'(U71'(isLNat'(XS), XS))
active'(splitAt'(s'(N), cons'(X, XS))) → mark'(U81'(and'(isNatural'(N), and'(isNatural'(X), isLNat'(XS))), N, X, XS))
active'(tail'(cons'(N, XS))) → mark'(U91'(and'(isNatural'(N), isLNat'(XS)), XS))
active'(take'(N, XS)) → mark'(U101'(and'(isNatural'(N), isLNat'(XS)), N, XS))
active'(U101'(X1, X2, X3)) → U101'(active'(X1), X2, X3)
active'(fst'(X)) → fst'(active'(X))
active'(splitAt'(X1, X2)) → splitAt'(active'(X1), X2)
active'(splitAt'(X1, X2)) → splitAt'(X1, active'(X2))
active'(U11'(X1, X2, X3)) → U11'(active'(X1), X2, X3)
active'(snd'(X)) → snd'(active'(X))
active'(U21'(X1, X2)) → U21'(active'(X1), X2)
active'(U31'(X1, X2)) → U31'(active'(X1), X2)
active'(U41'(X1, X2)) → U41'(active'(X1), X2)
active'(cons'(X1, X2)) → cons'(active'(X1), X2)
active'(natsFrom'(X)) → natsFrom'(active'(X))
active'(s'(X)) → s'(active'(X))
active'(U51'(X1, X2, X3)) → U51'(active'(X1), X2, X3)
active'(head'(X)) → head'(active'(X))
active'(afterNth'(X1, X2)) → afterNth'(active'(X1), X2)
active'(afterNth'(X1, X2)) → afterNth'(X1, active'(X2))
active'(U61'(X1, X2)) → U61'(active'(X1), X2)
active'(U71'(X1, X2)) → U71'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(active'(X1), X2)
active'(pair'(X1, X2)) → pair'(X1, active'(X2))
active'(U81'(X1, X2, X3, X4)) → U81'(active'(X1), X2, X3, X4)
active'(U82'(X1, X2)) → U82'(active'(X1), X2)
active'(U91'(X1, X2)) → U91'(active'(X1), X2)
active'(and'(X1, X2)) → and'(active'(X1), X2)
active'(tail'(X)) → tail'(active'(X))
active'(take'(X1, X2)) → take'(active'(X1), X2)
active'(take'(X1, X2)) → take'(X1, active'(X2))
active'(sel'(X1, X2)) → sel'(active'(X1), X2)
active'(sel'(X1, X2)) → sel'(X1, active'(X2))
U101'(mark'(X1), X2, X3) → mark'(U101'(X1, X2, X3))
fst'(mark'(X)) → mark'(fst'(X))
splitAt'(mark'(X1), X2) → mark'(splitAt'(X1, X2))
splitAt'(X1, mark'(X2)) → mark'(splitAt'(X1, X2))
U11'(mark'(X1), X2, X3) → mark'(U11'(X1, X2, X3))
snd'(mark'(X)) → mark'(snd'(X))
U21'(mark'(X1), X2) → mark'(U21'(X1, X2))
U31'(mark'(X1), X2) → mark'(U31'(X1, X2))
U41'(mark'(X1), X2) → mark'(U41'(X1, X2))
cons'(mark'(X1), X2) → mark'(cons'(X1, X2))
natsFrom'(mark'(X)) → mark'(natsFrom'(X))
s'(mark'(X)) → mark'(s'(X))
U51'(mark'(X1), X2, X3) → mark'(U51'(X1, X2, X3))
head'(mark'(X)) → mark'(head'(X))
afterNth'(mark'(X1), X2) → mark'(afterNth'(X1, X2))
afterNth'(X1, mark'(X2)) → mark'(afterNth'(X1, X2))
U61'(mark'(X1), X2) → mark'(U61'(X1, X2))
U71'(mark'(X1), X2) → mark'(U71'(X1, X2))
pair'(mark'(X1), X2) → mark'(pair'(X1, X2))
pair'(X1, mark'(X2)) → mark'(pair'(X1, X2))
U81'(mark'(X1), X2, X3, X4) → mark'(U81'(X1, X2, X3, X4))
U82'(mark'(X1), X2) → mark'(U82'(X1, X2))
U91'(mark'(X1), X2) → mark'(U91'(X1, X2))
and'(mark'(X1), X2) → mark'(and'(X1, X2))
tail'(mark'(X)) → mark'(tail'(X))
take'(mark'(X1), X2) → mark'(take'(X1, X2))
take'(X1, mark'(X2)) → mark'(take'(X1, X2))
sel'(mark'(X1), X2) → mark'(sel'(X1, X2))
sel'(X1, mark'(X2)) → mark'(sel'(X1, X2))
proper'(U101'(X1, X2, X3)) → U101'(proper'(X1), proper'(X2), proper'(X3))
proper'(tt') → ok'(tt')
proper'(fst'(X)) → fst'(proper'(X))
proper'(splitAt'(X1, X2)) → splitAt'(proper'(X1), proper'(X2))
proper'(U11'(X1, X2, X3)) → U11'(proper'(X1), proper'(X2), proper'(X3))
proper'(snd'(X)) → snd'(proper'(X))
proper'(U21'(X1, X2)) → U21'(proper'(X1), proper'(X2))
proper'(U31'(X1, X2)) → U31'(proper'(X1), proper'(X2))
proper'(U41'(X1, X2)) → U41'(proper'(X1), proper'(X2))
proper'(cons'(X1, X2)) → cons'(proper'(X1), proper'(X2))
proper'(natsFrom'(X)) → natsFrom'(proper'(X))
proper'(s'(X)) → s'(proper'(X))
proper'(U51'(X1, X2, X3)) → U51'(proper'(X1), proper'(X2), proper'(X3))
proper'(head'(X)) → head'(proper'(X))
proper'(afterNth'(X1, X2)) → afterNth'(proper'(X1), proper'(X2))
proper'(U61'(X1, X2)) → U61'(proper'(X1), proper'(X2))
proper'(U71'(X1, X2)) → U71'(proper'(X1), proper'(X2))
proper'(pair'(X1, X2)) → pair'(proper'(X1), proper'(X2))
proper'(nil') → ok'(nil')
proper'(U81'(X1, X2, X3, X4)) → U81'(proper'(X1), proper'(X2), proper'(X3), proper'(X4))
proper'(U82'(X1, X2)) → U82'(proper'(X1), proper'(X2))
proper'(U91'(X1, X2)) → U91'(proper'(X1), proper'(X2))
proper'(and'(X1, X2)) → and'(proper'(X1), proper'(X2))
proper'(isNatural'(X)) → isNatural'(proper'(X))
proper'(isLNat'(X)) → isLNat'(proper'(X))
proper'(isPLNat'(X)) → isPLNat'(proper'(X))
proper'(tail'(X)) → tail'(proper'(X))
proper'(take'(X1, X2)) → take'(proper'(X1), proper'(X2))
proper'(0') → ok'(0')
proper'(sel'(X1, X2)) → sel'(proper'(X1), proper'(X2))
U101'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U101'(X1, X2, X3))
fst'(ok'(X)) → ok'(fst'(X))
splitAt'(ok'(X1), ok'(X2)) → ok'(splitAt'(X1, X2))
U11'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U11'(X1, X2, X3))
snd'(ok'(X)) → ok'(snd'(X))
U21'(ok'(X1), ok'(X2)) → ok'(U21'(X1, X2))
U31'(ok'(X1), ok'(X2)) → ok'(U31'(X1, X2))
U41'(ok'(X1), ok'(X2)) → ok'(U41'(X1, X2))
cons'(ok'(X1), ok'(X2)) → ok'(cons'(X1, X2))
natsFrom'(ok'(X)) → ok'(natsFrom'(X))
s'(ok'(X)) → ok'(s'(X))
U51'(ok'(X1), ok'(X2), ok'(X3)) → ok'(U51'(X1, X2, X3))
head'(ok'(X)) → ok'(head'(X))
afterNth'(ok'(X1), ok'(X2)) → ok'(afterNth'(X1, X2))
U61'(ok'(X1), ok'(X2)) → ok'(U61'(X1, X2))
U71'(ok'(X1), ok'(X2)) → ok'(U71'(X1, X2))
pair'(ok'(X1), ok'(X2)) → ok'(pair'(X1, X2))
U81'(ok'(X1), ok'(X2), ok'(X3), ok'(X4)) → ok'(U81'(X1, X2, X3, X4))
U82'(ok'(X1), ok'(X2)) → ok'(U82'(X1, X2))
U91'(ok'(X1), ok'(X2)) → ok'(U91'(X1, X2))
and'(ok'(X1), ok'(X2)) → ok'(and'(X1, X2))
isNatural'(ok'(X)) → ok'(isNatural'(X))
isLNat'(ok'(X)) → ok'(isLNat'(X))
isPLNat'(ok'(X)) → ok'(isPLNat'(X))
tail'(ok'(X)) → ok'(tail'(X))
take'(ok'(X1), ok'(X2)) → ok'(take'(X1, X2))
sel'(ok'(X1), ok'(X2)) → ok'(sel'(X1, X2))
top'(mark'(X)) → top'(proper'(X))
top'(ok'(X)) → top'(active'(X))

Types:
active' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U101' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tt' :: tt':mark':nil':0':ok'
mark' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
fst' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
splitAt' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U11' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
snd' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U21' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U31' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U41' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
cons' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
natsFrom' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
s' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U51' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
head' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
afterNth' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U61' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U71' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
pair' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
nil' :: tt':mark':nil':0':ok'
U81' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U82' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
U91' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
and' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isNatural' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
isPLNat' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
tail' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
take' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
0' :: tt':mark':nil':0':ok'
sel' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
proper' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
ok' :: tt':mark':nil':0':ok' → tt':mark':nil':0':ok'
top' :: tt':mark':nil':0':ok' → top'
_hole_tt':mark':nil':0':ok'1 :: tt':mark':nil':0':ok'
_hole_top'2 :: top'
_gen_tt':mark':nil':0':ok'3 :: Nat → tt':mark':nil':0':ok'

Lemmas:
fst'(_gen_tt':mark':nil':0':ok'3(+(1, _n5))) → _*4, rt ∈ Ω(n5)
splitAt'(_gen_tt':mark':nil':0':ok'3(+(1, _n5311)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n5311)
snd'(_gen_tt':mark':nil':0':ok'3(+(1, _n13931))) → _*4, rt ∈ Ω(n13931)
cons'(_gen_tt':mark':nil':0':ok'3(+(1, _n19552)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n19552)
natsFrom'(_gen_tt':mark':nil':0':ok'3(+(1, _n28562))) → _*4, rt ∈ Ω(n28562)
s'(_gen_tt':mark':nil':0':ok'3(+(1, _n34498))) → _*4, rt ∈ Ω(n34498)
head'(_gen_tt':mark':nil':0':ok'3(+(1, _n40558))) → _*4, rt ∈ Ω(n40558)
afterNth'(_gen_tt':mark':nil':0':ok'3(+(1, _n46742)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n46742)
pair'(_gen_tt':mark':nil':0':ok'3(+(1, _n57062)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n57062)
U82'(_gen_tt':mark':nil':0':ok'3(+(1, _n67750)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n67750)
U11'(_gen_tt':mark':nil':0':ok'3(+(1, _n78587)), _gen_tt':mark':nil':0':ok'3(b), _gen_tt':mark':nil':0':ok'3(c)) → _*4, rt ∈ Ω(n78587)
and'(_gen_tt':mark':nil':0':ok'3(+(1, _n94230)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n94230)

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

The following defined symbols remain to be analysed:
U21', active', U31', isPLNat', U41', U51', U61', U71', U81', U91', U101', tail', take', sel', proper', top'

They will be analysed ascendingly in the following order:
U21' < active'
U31' < active'
isPLNat' < active'
U41' < active'
U51' < active'
U61' < active'
U71' < active'
U81' < active'
U91' < active'
U101' < active'
tail' < active'
take' < active'
sel' < active'
active' < top'
U21' < proper'
U31' < proper'
isPLNat' < proper'
U41' < proper'
U51' < proper'
U61' < proper'
U71' < proper'
U81' < proper'
U91' < proper'
U101' < proper'
tail' < proper'
take' < proper'
sel' < proper'
proper' < top'


Proved the following rewrite lemma:
U21'(_gen_tt':mark':nil':0':ok'3(+(1, _n106150)), _gen_tt':mark':nil':0':ok'3(b)) → _*4, rt ∈ Ω(n106150)

Induction Base:
U21'(_gen_tt':mark':nil':0':ok'3(+(1, 0)), _gen_tt':mark':nil':0':ok'3(b))

Induction Step:
U21'(_gen_tt':mark':nil':0':ok'3(+(1, +(_$n106151, 1))), _gen_tt':mark':nil':0':ok'3(_b110211)) →RΩ(1)
mark'(U21'(_gen_tt':mark':nil':0':ok'3(+(1, _$n106151)), _gen_tt':mark':nil':0':ok'3(_b110211))) →IH
mark'(_*4)

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