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

natsFrom(N) → cons(N, n__natsFrom(s(N)))
fst(pair(XS, YS)) → XS
snd(pair(XS, YS)) → YS
splitAt(0, XS) → pair(nil, XS)
splitAt(s(N), cons(X, XS)) → u(splitAt(N, activate(XS)), N, X, activate(XS))
u(pair(YS, ZS), N, X, XS) → pair(cons(activate(X), YS), ZS)
head(cons(N, XS)) → N
tail(cons(N, XS)) → activate(XS)
sel(N, XS) → head(afterNth(N, XS))
take(N, XS) → fst(splitAt(N, XS))
afterNth(N, XS) → snd(splitAt(N, XS))
natsFrom(X) → n__natsFrom(X)
activate(n__natsFrom(X)) → natsFrom(X)
activate(X) → X

Rewrite Strategy: INNERMOST


Renamed function symbols to avoid clashes with predefined symbol.


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


natsFrom'(N) → cons'(N, n__natsFrom'(s'(N)))
fst'(pair'(XS, YS)) → XS
snd'(pair'(XS, YS)) → YS
splitAt'(0', XS) → pair'(nil', XS)
splitAt'(s'(N), cons'(X, XS)) → u'(splitAt'(N, activate'(XS)), N, X, activate'(XS))
u'(pair'(YS, ZS), N, X, XS) → pair'(cons'(activate'(X), YS), ZS)
head'(cons'(N, XS)) → N
tail'(cons'(N, XS)) → activate'(XS)
sel'(N, XS) → head'(afterNth'(N, XS))
take'(N, XS) → fst'(splitAt'(N, XS))
afterNth'(N, XS) → snd'(splitAt'(N, XS))
natsFrom'(X) → n__natsFrom'(X)
activate'(n__natsFrom'(X)) → natsFrom'(X)
activate'(X) → X

Rewrite Strategy: INNERMOST


Sliced the following arguments:
u'/1


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


natsFrom'(N) → cons'(N, n__natsFrom'(s'(N)))
fst'(pair'(XS, YS)) → XS
snd'(pair'(XS, YS)) → YS
splitAt'(0', XS) → pair'(nil', XS)
splitAt'(s'(N), cons'(X, XS)) → u'(splitAt'(N, activate'(XS)), X, activate'(XS))
u'(pair'(YS, ZS), X, XS) → pair'(cons'(activate'(X), YS), ZS)
head'(cons'(N, XS)) → N
tail'(cons'(N, XS)) → activate'(XS)
sel'(N, XS) → head'(afterNth'(N, XS))
take'(N, XS) → fst'(splitAt'(N, XS))
afterNth'(N, XS) → snd'(splitAt'(N, XS))
natsFrom'(X) → n__natsFrom'(X)
activate'(n__natsFrom'(X)) → natsFrom'(X)
activate'(X) → X

Rewrite Strategy: INNERMOST


Infered types.


Rules:
natsFrom'(N) → cons'(N, n__natsFrom'(s'(N)))
fst'(pair'(XS, YS)) → XS
snd'(pair'(XS, YS)) → YS
splitAt'(0', XS) → pair'(nil', XS)
splitAt'(s'(N), cons'(X, XS)) → u'(splitAt'(N, activate'(XS)), X, activate'(XS))
u'(pair'(YS, ZS), X, XS) → pair'(cons'(activate'(X), YS), ZS)
head'(cons'(N, XS)) → N
tail'(cons'(N, XS)) → activate'(XS)
sel'(N, XS) → head'(afterNth'(N, XS))
take'(N, XS) → fst'(splitAt'(N, XS))
afterNth'(N, XS) → snd'(splitAt'(N, XS))
natsFrom'(X) → n__natsFrom'(X)
activate'(n__natsFrom'(X)) → natsFrom'(X)
activate'(X) → X

Types:
natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
cons' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
n__natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
s' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
fst' :: pair' → s':n__natsFrom':cons':0':nil'
pair' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
snd' :: pair' → s':n__natsFrom':cons':0':nil'
splitAt' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
0' :: s':n__natsFrom':cons':0':nil'
nil' :: s':n__natsFrom':cons':0':nil'
u' :: pair' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
activate' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
head' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
tail' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
sel' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
afterNth' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
take' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
_hole_s':n__natsFrom':cons':0':nil'1 :: s':n__natsFrom':cons':0':nil'
_hole_pair'2 :: pair'
_gen_s':n__natsFrom':cons':0':nil'3 :: Nat → s':n__natsFrom':cons':0':nil'


Heuristically decided to analyse the following defined symbols:
splitAt'


Rules:
natsFrom'(N) → cons'(N, n__natsFrom'(s'(N)))
fst'(pair'(XS, YS)) → XS
snd'(pair'(XS, YS)) → YS
splitAt'(0', XS) → pair'(nil', XS)
splitAt'(s'(N), cons'(X, XS)) → u'(splitAt'(N, activate'(XS)), X, activate'(XS))
u'(pair'(YS, ZS), X, XS) → pair'(cons'(activate'(X), YS), ZS)
head'(cons'(N, XS)) → N
tail'(cons'(N, XS)) → activate'(XS)
sel'(N, XS) → head'(afterNth'(N, XS))
take'(N, XS) → fst'(splitAt'(N, XS))
afterNth'(N, XS) → snd'(splitAt'(N, XS))
natsFrom'(X) → n__natsFrom'(X)
activate'(n__natsFrom'(X)) → natsFrom'(X)
activate'(X) → X

Types:
natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
cons' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
n__natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
s' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
fst' :: pair' → s':n__natsFrom':cons':0':nil'
pair' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
snd' :: pair' → s':n__natsFrom':cons':0':nil'
splitAt' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
0' :: s':n__natsFrom':cons':0':nil'
nil' :: s':n__natsFrom':cons':0':nil'
u' :: pair' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
activate' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
head' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
tail' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
sel' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
afterNth' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
take' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
_hole_s':n__natsFrom':cons':0':nil'1 :: s':n__natsFrom':cons':0':nil'
_hole_pair'2 :: pair'
_gen_s':n__natsFrom':cons':0':nil'3 :: Nat → s':n__natsFrom':cons':0':nil'

Generator Equations:
_gen_s':n__natsFrom':cons':0':nil'3(0) ⇔ 0'
_gen_s':n__natsFrom':cons':0':nil'3(+(x, 1)) ⇔ cons'(0', _gen_s':n__natsFrom':cons':0':nil'3(x))

The following defined symbols remain to be analysed:
splitAt'


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


Rules:
natsFrom'(N) → cons'(N, n__natsFrom'(s'(N)))
fst'(pair'(XS, YS)) → XS
snd'(pair'(XS, YS)) → YS
splitAt'(0', XS) → pair'(nil', XS)
splitAt'(s'(N), cons'(X, XS)) → u'(splitAt'(N, activate'(XS)), X, activate'(XS))
u'(pair'(YS, ZS), X, XS) → pair'(cons'(activate'(X), YS), ZS)
head'(cons'(N, XS)) → N
tail'(cons'(N, XS)) → activate'(XS)
sel'(N, XS) → head'(afterNth'(N, XS))
take'(N, XS) → fst'(splitAt'(N, XS))
afterNth'(N, XS) → snd'(splitAt'(N, XS))
natsFrom'(X) → n__natsFrom'(X)
activate'(n__natsFrom'(X)) → natsFrom'(X)
activate'(X) → X

Types:
natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
cons' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
n__natsFrom' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
s' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
fst' :: pair' → s':n__natsFrom':cons':0':nil'
pair' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
snd' :: pair' → s':n__natsFrom':cons':0':nil'
splitAt' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
0' :: s':n__natsFrom':cons':0':nil'
nil' :: s':n__natsFrom':cons':0':nil'
u' :: pair' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → pair'
activate' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
head' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
tail' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
sel' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
afterNth' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
take' :: s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil' → s':n__natsFrom':cons':0':nil'
_hole_s':n__natsFrom':cons':0':nil'1 :: s':n__natsFrom':cons':0':nil'
_hole_pair'2 :: pair'
_gen_s':n__natsFrom':cons':0':nil'3 :: Nat → s':n__natsFrom':cons':0':nil'

Generator Equations:
_gen_s':n__natsFrom':cons':0':nil'3(0) ⇔ 0'
_gen_s':n__natsFrom':cons':0':nil'3(+(x, 1)) ⇔ cons'(0', _gen_s':n__natsFrom':cons':0':nil'3(x))

No more defined symbols left to analyse.