(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
U101(tt, V2) → U102(isLNat(activate(V2)))
U102(tt) → tt
U11(tt, N, XS) → U12(isLNat(activate(XS)), activate(N), activate(XS))
U111(tt) → tt
U12(tt, N, XS) → snd(splitAt(activate(N), activate(XS)))
U121(tt) → tt
U131(tt, V2) → U132(isLNat(activate(V2)))
U132(tt) → tt
U141(tt, V2) → U142(isLNat(activate(V2)))
U142(tt) → tt
U151(tt, V2) → U152(isLNat(activate(V2)))
U152(tt) → tt
U161(tt, N) → cons(activate(N), n__natsFrom(n__s(activate(N))))
U171(tt, N, XS) → U172(isLNat(activate(XS)), activate(N), activate(XS))
U172(tt, N, XS) → head(afterNth(activate(N), activate(XS)))
U181(tt, Y) → U182(isLNat(activate(Y)), activate(Y))
U182(tt, Y) → activate(Y)
U191(tt, XS) → pair(nil, activate(XS))
U201(tt, N, X, XS) → U202(isNatural(activate(X)), activate(N), activate(X), activate(XS))
U202(tt, N, X, XS) → U203(isLNat(activate(XS)), activate(N), activate(X), activate(XS))
U203(tt, N, X, XS) → U204(splitAt(activate(N), activate(XS)), activate(X))
U204(pair(YS, ZS), X) → pair(cons(activate(X), YS), ZS)
U21(tt, X, Y) → U22(isLNat(activate(Y)), activate(X))
U211(tt, XS) → U212(isLNat(activate(XS)), activate(XS))
U212(tt, XS) → activate(XS)
U22(tt, X) → activate(X)
U221(tt, N, XS) → U222(isLNat(activate(XS)), activate(N), activate(XS))
U222(tt, N, XS) → fst(splitAt(activate(N), activate(XS)))
U31(tt, N, XS) → U32(isLNat(activate(XS)), activate(N))
U32(tt, N) → activate(N)
U41(tt, V2) → U42(isLNat(activate(V2)))
U42(tt) → tt
U51(tt, V2) → U52(isLNat(activate(V2)))
U52(tt) → tt
U61(tt) → tt
U71(tt) → tt
U81(tt) → tt
U91(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, activate(XS))
isLNat(n__nil) → tt
isLNat(n__afterNth(V1, V2)) → U41(isNatural(activate(V1)), activate(V2))
isLNat(n__cons(V1, V2)) → U51(isNatural(activate(V1)), activate(V2))
isLNat(n__fst(V1)) → U61(isPLNat(activate(V1)))
isLNat(n__natsFrom(V1)) → U71(isNatural(activate(V1)))
isLNat(n__snd(V1)) → U81(isPLNat(activate(V1)))
isLNat(n__tail(V1)) → U91(isLNat(activate(V1)))
isLNat(n__take(V1, V2)) → U101(isNatural(activate(V1)), activate(V2))
isNatural(n__0) → tt
isNatural(n__head(V1)) → U111(isLNat(activate(V1)))
isNatural(n__s(V1)) → U121(isNatural(activate(V1)))
isNatural(n__sel(V1, V2)) → U131(isNatural(activate(V1)), activate(V2))
isPLNat(n__pair(V1, V2)) → U141(isLNat(activate(V1)), activate(V2))
isPLNat(n__splitAt(V1, V2)) → U151(isNatural(activate(V1)), activate(V2))
natsFrom(N) → U161(isNatural(N), N)
sel(N, XS) → U171(isNatural(N), N, XS)
snd(pair(X, Y)) → U181(isLNat(X), Y)
splitAt(0, XS) → U191(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U201(isNatural(N), N, X, activate(XS))
tail(cons(N, XS)) → U211(isNatural(N), activate(XS))
take(N, XS) → U221(isNatural(N), N, XS)
natsFrom(X) → n__natsFrom(X)
s(X) → n__s(X)
nil → n__nil
afterNth(X1, X2) → n__afterNth(X1, X2)
cons(X1, X2) → n__cons(X1, X2)
fst(X) → n__fst(X)
snd(X) → n__snd(X)
tail(X) → n__tail(X)
take(X1, X2) → n__take(X1, X2)
0 → n__0
head(X) → n__head(X)
sel(X1, X2) → n__sel(X1, X2)
pair(X1, X2) → n__pair(X1, X2)
splitAt(X1, X2) → n__splitAt(X1, X2)
activate(n__natsFrom(X)) → natsFrom(activate(X))
activate(n__s(X)) → s(activate(X))
activate(n__nil) → nil
activate(n__afterNth(X1, X2)) → afterNth(activate(X1), activate(X2))
activate(n__cons(X1, X2)) → cons(activate(X1), X2)
activate(n__fst(X)) → fst(activate(X))
activate(n__snd(X)) → snd(activate(X))
activate(n__tail(X)) → tail(activate(X))
activate(n__take(X1, X2)) → take(activate(X1), activate(X2))
activate(n__0) → 0
activate(n__head(X)) → head(activate(X))
activate(n__sel(X1, X2)) → sel(activate(X1), activate(X2))
activate(n__pair(X1, X2)) → pair(activate(X1), activate(X2))
activate(n__splitAt(X1, X2)) → splitAt(activate(X1), activate(X2))
activate(X) → X
Q is empty.
(1) DependencyPairsProof (EQUIVALENT transformation)
Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.
(2) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U1011(tt, V2) → U1021(isLNat(activate(V2)))
U1011(tt, V2) → ISLNAT(activate(V2))
U1011(tt, V2) → ACTIVATE(V2)
U111(tt, N, XS) → U121(isLNat(activate(XS)), activate(N), activate(XS))
U111(tt, N, XS) → ISLNAT(activate(XS))
U111(tt, N, XS) → ACTIVATE(XS)
U111(tt, N, XS) → ACTIVATE(N)
U121(tt, N, XS) → SND(splitAt(activate(N), activate(XS)))
U121(tt, N, XS) → SPLITAT(activate(N), activate(XS))
U121(tt, N, XS) → ACTIVATE(N)
U121(tt, N, XS) → ACTIVATE(XS)
U1311(tt, V2) → U1321(isLNat(activate(V2)))
U1311(tt, V2) → ISLNAT(activate(V2))
U1311(tt, V2) → ACTIVATE(V2)
U1411(tt, V2) → U1421(isLNat(activate(V2)))
U1411(tt, V2) → ISLNAT(activate(V2))
U1411(tt, V2) → ACTIVATE(V2)
U1511(tt, V2) → U1521(isLNat(activate(V2)))
U1511(tt, V2) → ISLNAT(activate(V2))
U1511(tt, V2) → ACTIVATE(V2)
U1611(tt, N) → CONS(activate(N), n__natsFrom(n__s(activate(N))))
U1611(tt, N) → ACTIVATE(N)
U1711(tt, N, XS) → U1721(isLNat(activate(XS)), activate(N), activate(XS))
U1711(tt, N, XS) → ISLNAT(activate(XS))
U1711(tt, N, XS) → ACTIVATE(XS)
U1711(tt, N, XS) → ACTIVATE(N)
U1721(tt, N, XS) → HEAD(afterNth(activate(N), activate(XS)))
U1721(tt, N, XS) → AFTERNTH(activate(N), activate(XS))
U1721(tt, N, XS) → ACTIVATE(N)
U1721(tt, N, XS) → ACTIVATE(XS)
U1811(tt, Y) → U1821(isLNat(activate(Y)), activate(Y))
U1811(tt, Y) → ISLNAT(activate(Y))
U1811(tt, Y) → ACTIVATE(Y)
U1821(tt, Y) → ACTIVATE(Y)
U1911(tt, XS) → PAIR(nil, activate(XS))
U1911(tt, XS) → NIL
U1911(tt, XS) → ACTIVATE(XS)
U2011(tt, N, X, XS) → U2021(isNatural(activate(X)), activate(N), activate(X), activate(XS))
U2011(tt, N, X, XS) → ISNATURAL(activate(X))
U2011(tt, N, X, XS) → ACTIVATE(X)
U2011(tt, N, X, XS) → ACTIVATE(N)
U2011(tt, N, X, XS) → ACTIVATE(XS)
U2021(tt, N, X, XS) → U2031(isLNat(activate(XS)), activate(N), activate(X), activate(XS))
U2021(tt, N, X, XS) → ISLNAT(activate(XS))
U2021(tt, N, X, XS) → ACTIVATE(XS)
U2021(tt, N, X, XS) → ACTIVATE(N)
U2021(tt, N, X, XS) → ACTIVATE(X)
U2031(tt, N, X, XS) → U2041(splitAt(activate(N), activate(XS)), activate(X))
U2031(tt, N, X, XS) → SPLITAT(activate(N), activate(XS))
U2031(tt, N, X, XS) → ACTIVATE(N)
U2031(tt, N, X, XS) → ACTIVATE(XS)
U2031(tt, N, X, XS) → ACTIVATE(X)
U2041(pair(YS, ZS), X) → PAIR(cons(activate(X), YS), ZS)
U2041(pair(YS, ZS), X) → CONS(activate(X), YS)
U2041(pair(YS, ZS), X) → ACTIVATE(X)
U211(tt, X, Y) → U221(isLNat(activate(Y)), activate(X))
U211(tt, X, Y) → ISLNAT(activate(Y))
U211(tt, X, Y) → ACTIVATE(Y)
U211(tt, X, Y) → ACTIVATE(X)
U2111(tt, XS) → U2121(isLNat(activate(XS)), activate(XS))
U2111(tt, XS) → ISLNAT(activate(XS))
U2111(tt, XS) → ACTIVATE(XS)
U2121(tt, XS) → ACTIVATE(XS)
U221(tt, X) → ACTIVATE(X)
U2211(tt, N, XS) → U2221(isLNat(activate(XS)), activate(N), activate(XS))
U2211(tt, N, XS) → ISLNAT(activate(XS))
U2211(tt, N, XS) → ACTIVATE(XS)
U2211(tt, N, XS) → ACTIVATE(N)
U2221(tt, N, XS) → FST(splitAt(activate(N), activate(XS)))
U2221(tt, N, XS) → SPLITAT(activate(N), activate(XS))
U2221(tt, N, XS) → ACTIVATE(N)
U2221(tt, N, XS) → ACTIVATE(XS)
U311(tt, N, XS) → U321(isLNat(activate(XS)), activate(N))
U311(tt, N, XS) → ISLNAT(activate(XS))
U311(tt, N, XS) → ACTIVATE(XS)
U311(tt, N, XS) → ACTIVATE(N)
U321(tt, N) → ACTIVATE(N)
U411(tt, V2) → U421(isLNat(activate(V2)))
U411(tt, V2) → ISLNAT(activate(V2))
U411(tt, V2) → ACTIVATE(V2)
U511(tt, V2) → U521(isLNat(activate(V2)))
U511(tt, V2) → ISLNAT(activate(V2))
U511(tt, V2) → ACTIVATE(V2)
AFTERNTH(N, XS) → U111(isNatural(N), N, XS)
AFTERNTH(N, XS) → ISNATURAL(N)
FST(pair(X, Y)) → U211(isLNat(X), X, Y)
FST(pair(X, Y)) → ISLNAT(X)
HEAD(cons(N, XS)) → U311(isNatural(N), N, activate(XS))
HEAD(cons(N, XS)) → ISNATURAL(N)
HEAD(cons(N, XS)) → ACTIVATE(XS)
ISLNAT(n__afterNth(V1, V2)) → U411(isNatural(activate(V1)), activate(V2))
ISLNAT(n__afterNth(V1, V2)) → ISNATURAL(activate(V1))
ISLNAT(n__afterNth(V1, V2)) → ACTIVATE(V1)
ISLNAT(n__afterNth(V1, V2)) → ACTIVATE(V2)
ISLNAT(n__cons(V1, V2)) → U511(isNatural(activate(V1)), activate(V2))
ISLNAT(n__cons(V1, V2)) → ISNATURAL(activate(V1))
ISLNAT(n__cons(V1, V2)) → ACTIVATE(V1)
ISLNAT(n__cons(V1, V2)) → ACTIVATE(V2)
ISLNAT(n__fst(V1)) → U611(isPLNat(activate(V1)))
ISLNAT(n__fst(V1)) → ISPLNAT(activate(V1))
ISLNAT(n__fst(V1)) → ACTIVATE(V1)
ISLNAT(n__natsFrom(V1)) → U711(isNatural(activate(V1)))
ISLNAT(n__natsFrom(V1)) → ISNATURAL(activate(V1))
ISLNAT(n__natsFrom(V1)) → ACTIVATE(V1)
ISLNAT(n__snd(V1)) → U811(isPLNat(activate(V1)))
ISLNAT(n__snd(V1)) → ISPLNAT(activate(V1))
ISLNAT(n__snd(V1)) → ACTIVATE(V1)
ISLNAT(n__tail(V1)) → U911(isLNat(activate(V1)))
ISLNAT(n__tail(V1)) → ISLNAT(activate(V1))
ISLNAT(n__tail(V1)) → ACTIVATE(V1)
ISLNAT(n__take(V1, V2)) → U1011(isNatural(activate(V1)), activate(V2))
ISLNAT(n__take(V1, V2)) → ISNATURAL(activate(V1))
ISLNAT(n__take(V1, V2)) → ACTIVATE(V1)
ISLNAT(n__take(V1, V2)) → ACTIVATE(V2)
ISNATURAL(n__head(V1)) → U1111(isLNat(activate(V1)))
ISNATURAL(n__head(V1)) → ISLNAT(activate(V1))
ISNATURAL(n__head(V1)) → ACTIVATE(V1)
ISNATURAL(n__s(V1)) → U1211(isNatural(activate(V1)))
ISNATURAL(n__s(V1)) → ISNATURAL(activate(V1))
ISNATURAL(n__s(V1)) → ACTIVATE(V1)
ISNATURAL(n__sel(V1, V2)) → U1311(isNatural(activate(V1)), activate(V2))
ISNATURAL(n__sel(V1, V2)) → ISNATURAL(activate(V1))
ISNATURAL(n__sel(V1, V2)) → ACTIVATE(V1)
ISNATURAL(n__sel(V1, V2)) → ACTIVATE(V2)
ISPLNAT(n__pair(V1, V2)) → U1411(isLNat(activate(V1)), activate(V2))
ISPLNAT(n__pair(V1, V2)) → ISLNAT(activate(V1))
ISPLNAT(n__pair(V1, V2)) → ACTIVATE(V1)
ISPLNAT(n__pair(V1, V2)) → ACTIVATE(V2)
ISPLNAT(n__splitAt(V1, V2)) → U1511(isNatural(activate(V1)), activate(V2))
ISPLNAT(n__splitAt(V1, V2)) → ISNATURAL(activate(V1))
ISPLNAT(n__splitAt(V1, V2)) → ACTIVATE(V1)
ISPLNAT(n__splitAt(V1, V2)) → ACTIVATE(V2)
NATSFROM(N) → U1611(isNatural(N), N)
NATSFROM(N) → ISNATURAL(N)
SEL(N, XS) → U1711(isNatural(N), N, XS)
SEL(N, XS) → ISNATURAL(N)
SND(pair(X, Y)) → U1811(isLNat(X), Y)
SND(pair(X, Y)) → ISLNAT(X)
SPLITAT(0, XS) → U1911(isLNat(XS), XS)
SPLITAT(0, XS) → ISLNAT(XS)
SPLITAT(s(N), cons(X, XS)) → U2011(isNatural(N), N, X, activate(XS))
SPLITAT(s(N), cons(X, XS)) → ISNATURAL(N)
SPLITAT(s(N), cons(X, XS)) → ACTIVATE(XS)
TAIL(cons(N, XS)) → U2111(isNatural(N), activate(XS))
TAIL(cons(N, XS)) → ISNATURAL(N)
TAIL(cons(N, XS)) → ACTIVATE(XS)
TAKE(N, XS) → U2211(isNatural(N), N, XS)
TAKE(N, XS) → ISNATURAL(N)
ACTIVATE(n__natsFrom(X)) → NATSFROM(activate(X))
ACTIVATE(n__natsFrom(X)) → ACTIVATE(X)
ACTIVATE(n__s(X)) → S(activate(X))
ACTIVATE(n__s(X)) → ACTIVATE(X)
ACTIVATE(n__nil) → NIL
ACTIVATE(n__afterNth(X1, X2)) → AFTERNTH(activate(X1), activate(X2))
ACTIVATE(n__afterNth(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__afterNth(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__cons(X1, X2)) → CONS(activate(X1), X2)
ACTIVATE(n__cons(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__fst(X)) → FST(activate(X))
ACTIVATE(n__fst(X)) → ACTIVATE(X)
ACTIVATE(n__snd(X)) → SND(activate(X))
ACTIVATE(n__snd(X)) → ACTIVATE(X)
ACTIVATE(n__tail(X)) → TAIL(activate(X))
ACTIVATE(n__tail(X)) → ACTIVATE(X)
ACTIVATE(n__take(X1, X2)) → TAKE(activate(X1), activate(X2))
ACTIVATE(n__take(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__take(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__0) → 01
ACTIVATE(n__head(X)) → HEAD(activate(X))
ACTIVATE(n__head(X)) → ACTIVATE(X)
ACTIVATE(n__sel(X1, X2)) → SEL(activate(X1), activate(X2))
ACTIVATE(n__sel(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__sel(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__pair(X1, X2)) → PAIR(activate(X1), activate(X2))
ACTIVATE(n__pair(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__pair(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__splitAt(X1, X2)) → SPLITAT(activate(X1), activate(X2))
ACTIVATE(n__splitAt(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__splitAt(X1, X2)) → ACTIVATE(X2)
The TRS R consists of the following rules:
U101(tt, V2) → U102(isLNat(activate(V2)))
U102(tt) → tt
U11(tt, N, XS) → U12(isLNat(activate(XS)), activate(N), activate(XS))
U111(tt) → tt
U12(tt, N, XS) → snd(splitAt(activate(N), activate(XS)))
U121(tt) → tt
U131(tt, V2) → U132(isLNat(activate(V2)))
U132(tt) → tt
U141(tt, V2) → U142(isLNat(activate(V2)))
U142(tt) → tt
U151(tt, V2) → U152(isLNat(activate(V2)))
U152(tt) → tt
U161(tt, N) → cons(activate(N), n__natsFrom(n__s(activate(N))))
U171(tt, N, XS) → U172(isLNat(activate(XS)), activate(N), activate(XS))
U172(tt, N, XS) → head(afterNth(activate(N), activate(XS)))
U181(tt, Y) → U182(isLNat(activate(Y)), activate(Y))
U182(tt, Y) → activate(Y)
U191(tt, XS) → pair(nil, activate(XS))
U201(tt, N, X, XS) → U202(isNatural(activate(X)), activate(N), activate(X), activate(XS))
U202(tt, N, X, XS) → U203(isLNat(activate(XS)), activate(N), activate(X), activate(XS))
U203(tt, N, X, XS) → U204(splitAt(activate(N), activate(XS)), activate(X))
U204(pair(YS, ZS), X) → pair(cons(activate(X), YS), ZS)
U21(tt, X, Y) → U22(isLNat(activate(Y)), activate(X))
U211(tt, XS) → U212(isLNat(activate(XS)), activate(XS))
U212(tt, XS) → activate(XS)
U22(tt, X) → activate(X)
U221(tt, N, XS) → U222(isLNat(activate(XS)), activate(N), activate(XS))
U222(tt, N, XS) → fst(splitAt(activate(N), activate(XS)))
U31(tt, N, XS) → U32(isLNat(activate(XS)), activate(N))
U32(tt, N) → activate(N)
U41(tt, V2) → U42(isLNat(activate(V2)))
U42(tt) → tt
U51(tt, V2) → U52(isLNat(activate(V2)))
U52(tt) → tt
U61(tt) → tt
U71(tt) → tt
U81(tt) → tt
U91(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, activate(XS))
isLNat(n__nil) → tt
isLNat(n__afterNth(V1, V2)) → U41(isNatural(activate(V1)), activate(V2))
isLNat(n__cons(V1, V2)) → U51(isNatural(activate(V1)), activate(V2))
isLNat(n__fst(V1)) → U61(isPLNat(activate(V1)))
isLNat(n__natsFrom(V1)) → U71(isNatural(activate(V1)))
isLNat(n__snd(V1)) → U81(isPLNat(activate(V1)))
isLNat(n__tail(V1)) → U91(isLNat(activate(V1)))
isLNat(n__take(V1, V2)) → U101(isNatural(activate(V1)), activate(V2))
isNatural(n__0) → tt
isNatural(n__head(V1)) → U111(isLNat(activate(V1)))
isNatural(n__s(V1)) → U121(isNatural(activate(V1)))
isNatural(n__sel(V1, V2)) → U131(isNatural(activate(V1)), activate(V2))
isPLNat(n__pair(V1, V2)) → U141(isLNat(activate(V1)), activate(V2))
isPLNat(n__splitAt(V1, V2)) → U151(isNatural(activate(V1)), activate(V2))
natsFrom(N) → U161(isNatural(N), N)
sel(N, XS) → U171(isNatural(N), N, XS)
snd(pair(X, Y)) → U181(isLNat(X), Y)
splitAt(0, XS) → U191(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U201(isNatural(N), N, X, activate(XS))
tail(cons(N, XS)) → U211(isNatural(N), activate(XS))
take(N, XS) → U221(isNatural(N), N, XS)
natsFrom(X) → n__natsFrom(X)
s(X) → n__s(X)
nil → n__nil
afterNth(X1, X2) → n__afterNth(X1, X2)
cons(X1, X2) → n__cons(X1, X2)
fst(X) → n__fst(X)
snd(X) → n__snd(X)
tail(X) → n__tail(X)
take(X1, X2) → n__take(X1, X2)
0 → n__0
head(X) → n__head(X)
sel(X1, X2) → n__sel(X1, X2)
pair(X1, X2) → n__pair(X1, X2)
splitAt(X1, X2) → n__splitAt(X1, X2)
activate(n__natsFrom(X)) → natsFrom(activate(X))
activate(n__s(X)) → s(activate(X))
activate(n__nil) → nil
activate(n__afterNth(X1, X2)) → afterNth(activate(X1), activate(X2))
activate(n__cons(X1, X2)) → cons(activate(X1), X2)
activate(n__fst(X)) → fst(activate(X))
activate(n__snd(X)) → snd(activate(X))
activate(n__tail(X)) → tail(activate(X))
activate(n__take(X1, X2)) → take(activate(X1), activate(X2))
activate(n__0) → 0
activate(n__head(X)) → head(activate(X))
activate(n__sel(X1, X2)) → sel(activate(X1), activate(X2))
activate(n__pair(X1, X2)) → pair(activate(X1), activate(X2))
activate(n__splitAt(X1, X2)) → splitAt(activate(X1), activate(X2))
activate(X) → X
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
(3) DependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 22 less nodes.
(4) Obligation:
Q DP problem:
The TRS P consists of the following rules:
U1011(tt, V2) → ISLNAT(activate(V2))
ISLNAT(n__afterNth(V1, V2)) → U411(isNatural(activate(V1)), activate(V2))
U411(tt, V2) → ISLNAT(activate(V2))
ISLNAT(n__afterNth(V1, V2)) → ISNATURAL(activate(V1))
ISNATURAL(n__head(V1)) → ISLNAT(activate(V1))
ISLNAT(n__afterNth(V1, V2)) → ACTIVATE(V1)
ACTIVATE(n__natsFrom(X)) → NATSFROM(activate(X))
NATSFROM(N) → U1611(isNatural(N), N)
U1611(tt, N) → ACTIVATE(N)
ACTIVATE(n__natsFrom(X)) → ACTIVATE(X)
ACTIVATE(n__s(X)) → ACTIVATE(X)
ACTIVATE(n__afterNth(X1, X2)) → AFTERNTH(activate(X1), activate(X2))
AFTERNTH(N, XS) → U111(isNatural(N), N, XS)
U111(tt, N, XS) → U121(isLNat(activate(XS)), activate(N), activate(XS))
U121(tt, N, XS) → SND(splitAt(activate(N), activate(XS)))
SND(pair(X, Y)) → U1811(isLNat(X), Y)
U1811(tt, Y) → U1821(isLNat(activate(Y)), activate(Y))
U1821(tt, Y) → ACTIVATE(Y)
ACTIVATE(n__afterNth(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__afterNth(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__cons(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__fst(X)) → FST(activate(X))
FST(pair(X, Y)) → U211(isLNat(X), X, Y)
U211(tt, X, Y) → U221(isLNat(activate(Y)), activate(X))
U221(tt, X) → ACTIVATE(X)
ACTIVATE(n__fst(X)) → ACTIVATE(X)
ACTIVATE(n__snd(X)) → SND(activate(X))
SND(pair(X, Y)) → ISLNAT(X)
ISLNAT(n__afterNth(V1, V2)) → ACTIVATE(V2)
ACTIVATE(n__snd(X)) → ACTIVATE(X)
ACTIVATE(n__tail(X)) → TAIL(activate(X))
TAIL(cons(N, XS)) → U2111(isNatural(N), activate(XS))
U2111(tt, XS) → U2121(isLNat(activate(XS)), activate(XS))
U2121(tt, XS) → ACTIVATE(XS)
ACTIVATE(n__tail(X)) → ACTIVATE(X)
ACTIVATE(n__take(X1, X2)) → TAKE(activate(X1), activate(X2))
TAKE(N, XS) → U2211(isNatural(N), N, XS)
U2211(tt, N, XS) → U2221(isLNat(activate(XS)), activate(N), activate(XS))
U2221(tt, N, XS) → FST(splitAt(activate(N), activate(XS)))
FST(pair(X, Y)) → ISLNAT(X)
ISLNAT(n__cons(V1, V2)) → U511(isNatural(activate(V1)), activate(V2))
U511(tt, V2) → ISLNAT(activate(V2))
ISLNAT(n__cons(V1, V2)) → ISNATURAL(activate(V1))
ISNATURAL(n__head(V1)) → ACTIVATE(V1)
ACTIVATE(n__take(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__take(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__head(X)) → HEAD(activate(X))
HEAD(cons(N, XS)) → U311(isNatural(N), N, activate(XS))
U311(tt, N, XS) → U321(isLNat(activate(XS)), activate(N))
U321(tt, N) → ACTIVATE(N)
ACTIVATE(n__head(X)) → ACTIVATE(X)
ACTIVATE(n__sel(X1, X2)) → SEL(activate(X1), activate(X2))
SEL(N, XS) → U1711(isNatural(N), N, XS)
U1711(tt, N, XS) → U1721(isLNat(activate(XS)), activate(N), activate(XS))
U1721(tt, N, XS) → HEAD(afterNth(activate(N), activate(XS)))
HEAD(cons(N, XS)) → ISNATURAL(N)
ISNATURAL(n__s(V1)) → ISNATURAL(activate(V1))
ISNATURAL(n__s(V1)) → ACTIVATE(V1)
ACTIVATE(n__sel(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__sel(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__pair(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__pair(X1, X2)) → ACTIVATE(X2)
ACTIVATE(n__splitAt(X1, X2)) → SPLITAT(activate(X1), activate(X2))
SPLITAT(0, XS) → U1911(isLNat(XS), XS)
U1911(tt, XS) → ACTIVATE(XS)
ACTIVATE(n__splitAt(X1, X2)) → ACTIVATE(X1)
ACTIVATE(n__splitAt(X1, X2)) → ACTIVATE(X2)
SPLITAT(0, XS) → ISLNAT(XS)
ISLNAT(n__cons(V1, V2)) → ACTIVATE(V1)
ISLNAT(n__cons(V1, V2)) → ACTIVATE(V2)
ISLNAT(n__fst(V1)) → ISPLNAT(activate(V1))
ISPLNAT(n__pair(V1, V2)) → U1411(isLNat(activate(V1)), activate(V2))
U1411(tt, V2) → ISLNAT(activate(V2))
ISLNAT(n__fst(V1)) → ACTIVATE(V1)
ISLNAT(n__natsFrom(V1)) → ISNATURAL(activate(V1))
ISNATURAL(n__sel(V1, V2)) → U1311(isNatural(activate(V1)), activate(V2))
U1311(tt, V2) → ISLNAT(activate(V2))
ISLNAT(n__natsFrom(V1)) → ACTIVATE(V1)
ISLNAT(n__snd(V1)) → ISPLNAT(activate(V1))
ISPLNAT(n__pair(V1, V2)) → ISLNAT(activate(V1))
ISLNAT(n__snd(V1)) → ACTIVATE(V1)
ISLNAT(n__tail(V1)) → ISLNAT(activate(V1))
ISLNAT(n__tail(V1)) → ACTIVATE(V1)
ISLNAT(n__take(V1, V2)) → U1011(isNatural(activate(V1)), activate(V2))
U1011(tt, V2) → ACTIVATE(V2)
ISLNAT(n__take(V1, V2)) → ISNATURAL(activate(V1))
ISNATURAL(n__sel(V1, V2)) → ISNATURAL(activate(V1))
ISNATURAL(n__sel(V1, V2)) → ACTIVATE(V1)
ISNATURAL(n__sel(V1, V2)) → ACTIVATE(V2)
ISLNAT(n__take(V1, V2)) → ACTIVATE(V1)
ISLNAT(n__take(V1, V2)) → ACTIVATE(V2)
ISPLNAT(n__pair(V1, V2)) → ACTIVATE(V1)
ISPLNAT(n__pair(V1, V2)) → ACTIVATE(V2)
ISPLNAT(n__splitAt(V1, V2)) → U1511(isNatural(activate(V1)), activate(V2))
U1511(tt, V2) → ISLNAT(activate(V2))
U1511(tt, V2) → ACTIVATE(V2)
ISPLNAT(n__splitAt(V1, V2)) → ISNATURAL(activate(V1))
ISPLNAT(n__splitAt(V1, V2)) → ACTIVATE(V1)
ISPLNAT(n__splitAt(V1, V2)) → ACTIVATE(V2)
U1311(tt, V2) → ACTIVATE(V2)
U1411(tt, V2) → ACTIVATE(V2)
SPLITAT(s(N), cons(X, XS)) → U2011(isNatural(N), N, X, activate(XS))
U2011(tt, N, X, XS) → U2021(isNatural(activate(X)), activate(N), activate(X), activate(XS))
U2021(tt, N, X, XS) → U2031(isLNat(activate(XS)), activate(N), activate(X), activate(XS))
U2031(tt, N, X, XS) → U2041(splitAt(activate(N), activate(XS)), activate(X))
U2041(pair(YS, ZS), X) → ACTIVATE(X)
U2031(tt, N, X, XS) → SPLITAT(activate(N), activate(XS))
SPLITAT(s(N), cons(X, XS)) → ISNATURAL(N)
SPLITAT(s(N), cons(X, XS)) → ACTIVATE(XS)
U2031(tt, N, X, XS) → ACTIVATE(N)
U2031(tt, N, X, XS) → ACTIVATE(XS)
U2031(tt, N, X, XS) → ACTIVATE(X)
U2021(tt, N, X, XS) → ISLNAT(activate(XS))
U2021(tt, N, X, XS) → ACTIVATE(XS)
U2021(tt, N, X, XS) → ACTIVATE(N)
U2021(tt, N, X, XS) → ACTIVATE(X)
U2011(tt, N, X, XS) → ISNATURAL(activate(X))
U2011(tt, N, X, XS) → ACTIVATE(X)
U2011(tt, N, X, XS) → ACTIVATE(N)
U2011(tt, N, X, XS) → ACTIVATE(XS)
HEAD(cons(N, XS)) → ACTIVATE(XS)
U1721(tt, N, XS) → AFTERNTH(activate(N), activate(XS))
AFTERNTH(N, XS) → ISNATURAL(N)
U1721(tt, N, XS) → ACTIVATE(N)
U1721(tt, N, XS) → ACTIVATE(XS)
U1711(tt, N, XS) → ISLNAT(activate(XS))
U1711(tt, N, XS) → ACTIVATE(XS)
U1711(tt, N, XS) → ACTIVATE(N)
SEL(N, XS) → ISNATURAL(N)
U311(tt, N, XS) → ISLNAT(activate(XS))
U311(tt, N, XS) → ACTIVATE(XS)
U311(tt, N, XS) → ACTIVATE(N)
U511(tt, V2) → ACTIVATE(V2)
U2221(tt, N, XS) → SPLITAT(activate(N), activate(XS))
U2221(tt, N, XS) → ACTIVATE(N)
U2221(tt, N, XS) → ACTIVATE(XS)
U2211(tt, N, XS) → ISLNAT(activate(XS))
U2211(tt, N, XS) → ACTIVATE(XS)
U2211(tt, N, XS) → ACTIVATE(N)
TAKE(N, XS) → ISNATURAL(N)
U2111(tt, XS) → ISLNAT(activate(XS))
U2111(tt, XS) → ACTIVATE(XS)
TAIL(cons(N, XS)) → ISNATURAL(N)
TAIL(cons(N, XS)) → ACTIVATE(XS)
U211(tt, X, Y) → ISLNAT(activate(Y))
U211(tt, X, Y) → ACTIVATE(Y)
U211(tt, X, Y) → ACTIVATE(X)
U1811(tt, Y) → ISLNAT(activate(Y))
U1811(tt, Y) → ACTIVATE(Y)
U121(tt, N, XS) → SPLITAT(activate(N), activate(XS))
U121(tt, N, XS) → ACTIVATE(N)
U121(tt, N, XS) → ACTIVATE(XS)
U111(tt, N, XS) → ISLNAT(activate(XS))
U111(tt, N, XS) → ACTIVATE(XS)
U111(tt, N, XS) → ACTIVATE(N)
NATSFROM(N) → ISNATURAL(N)
U411(tt, V2) → ACTIVATE(V2)
The TRS R consists of the following rules:
U101(tt, V2) → U102(isLNat(activate(V2)))
U102(tt) → tt
U11(tt, N, XS) → U12(isLNat(activate(XS)), activate(N), activate(XS))
U111(tt) → tt
U12(tt, N, XS) → snd(splitAt(activate(N), activate(XS)))
U121(tt) → tt
U131(tt, V2) → U132(isLNat(activate(V2)))
U132(tt) → tt
U141(tt, V2) → U142(isLNat(activate(V2)))
U142(tt) → tt
U151(tt, V2) → U152(isLNat(activate(V2)))
U152(tt) → tt
U161(tt, N) → cons(activate(N), n__natsFrom(n__s(activate(N))))
U171(tt, N, XS) → U172(isLNat(activate(XS)), activate(N), activate(XS))
U172(tt, N, XS) → head(afterNth(activate(N), activate(XS)))
U181(tt, Y) → U182(isLNat(activate(Y)), activate(Y))
U182(tt, Y) → activate(Y)
U191(tt, XS) → pair(nil, activate(XS))
U201(tt, N, X, XS) → U202(isNatural(activate(X)), activate(N), activate(X), activate(XS))
U202(tt, N, X, XS) → U203(isLNat(activate(XS)), activate(N), activate(X), activate(XS))
U203(tt, N, X, XS) → U204(splitAt(activate(N), activate(XS)), activate(X))
U204(pair(YS, ZS), X) → pair(cons(activate(X), YS), ZS)
U21(tt, X, Y) → U22(isLNat(activate(Y)), activate(X))
U211(tt, XS) → U212(isLNat(activate(XS)), activate(XS))
U212(tt, XS) → activate(XS)
U22(tt, X) → activate(X)
U221(tt, N, XS) → U222(isLNat(activate(XS)), activate(N), activate(XS))
U222(tt, N, XS) → fst(splitAt(activate(N), activate(XS)))
U31(tt, N, XS) → U32(isLNat(activate(XS)), activate(N))
U32(tt, N) → activate(N)
U41(tt, V2) → U42(isLNat(activate(V2)))
U42(tt) → tt
U51(tt, V2) → U52(isLNat(activate(V2)))
U52(tt) → tt
U61(tt) → tt
U71(tt) → tt
U81(tt) → tt
U91(tt) → tt
afterNth(N, XS) → U11(isNatural(N), N, XS)
fst(pair(X, Y)) → U21(isLNat(X), X, Y)
head(cons(N, XS)) → U31(isNatural(N), N, activate(XS))
isLNat(n__nil) → tt
isLNat(n__afterNth(V1, V2)) → U41(isNatural(activate(V1)), activate(V2))
isLNat(n__cons(V1, V2)) → U51(isNatural(activate(V1)), activate(V2))
isLNat(n__fst(V1)) → U61(isPLNat(activate(V1)))
isLNat(n__natsFrom(V1)) → U71(isNatural(activate(V1)))
isLNat(n__snd(V1)) → U81(isPLNat(activate(V1)))
isLNat(n__tail(V1)) → U91(isLNat(activate(V1)))
isLNat(n__take(V1, V2)) → U101(isNatural(activate(V1)), activate(V2))
isNatural(n__0) → tt
isNatural(n__head(V1)) → U111(isLNat(activate(V1)))
isNatural(n__s(V1)) → U121(isNatural(activate(V1)))
isNatural(n__sel(V1, V2)) → U131(isNatural(activate(V1)), activate(V2))
isPLNat(n__pair(V1, V2)) → U141(isLNat(activate(V1)), activate(V2))
isPLNat(n__splitAt(V1, V2)) → U151(isNatural(activate(V1)), activate(V2))
natsFrom(N) → U161(isNatural(N), N)
sel(N, XS) → U171(isNatural(N), N, XS)
snd(pair(X, Y)) → U181(isLNat(X), Y)
splitAt(0, XS) → U191(isLNat(XS), XS)
splitAt(s(N), cons(X, XS)) → U201(isNatural(N), N, X, activate(XS))
tail(cons(N, XS)) → U211(isNatural(N), activate(XS))
take(N, XS) → U221(isNatural(N), N, XS)
natsFrom(X) → n__natsFrom(X)
s(X) → n__s(X)
nil → n__nil
afterNth(X1, X2) → n__afterNth(X1, X2)
cons(X1, X2) → n__cons(X1, X2)
fst(X) → n__fst(X)
snd(X) → n__snd(X)
tail(X) → n__tail(X)
take(X1, X2) → n__take(X1, X2)
0 → n__0
head(X) → n__head(X)
sel(X1, X2) → n__sel(X1, X2)
pair(X1, X2) → n__pair(X1, X2)
splitAt(X1, X2) → n__splitAt(X1, X2)
activate(n__natsFrom(X)) → natsFrom(activate(X))
activate(n__s(X)) → s(activate(X))
activate(n__nil) → nil
activate(n__afterNth(X1, X2)) → afterNth(activate(X1), activate(X2))
activate(n__cons(X1, X2)) → cons(activate(X1), X2)
activate(n__fst(X)) → fst(activate(X))
activate(n__snd(X)) → snd(activate(X))
activate(n__tail(X)) → tail(activate(X))
activate(n__take(X1, X2)) → take(activate(X1), activate(X2))
activate(n__0) → 0
activate(n__head(X)) → head(activate(X))
activate(n__sel(X1, X2)) → sel(activate(X1), activate(X2))
activate(n__pair(X1, X2)) → pair(activate(X1), activate(X2))
activate(n__splitAt(X1, X2)) → splitAt(activate(X1), activate(X2))
activate(X) → X
Q is empty.
We have to consider all minimal (P,Q,R)-chains.