TIMEOUT

The TRS could not be proven terminating. The proof attempt took 60002 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (21371ms).
 | – Problem 2 was processed with processor DependencyGraph (16181ms).
 |    | – Problem 7 remains open; application of the following processors failed [].
 | – Problem 3 was processed with processor DependencyGraph (17084ms).
 |    | – Problem 8 remains open; application of the following processors failed [].
 | – Problem 4 remains open; application of the following processors failed [SubtermCriterion (2ms), DependencyGraph (timeout)].
 | – Problem 5 remains open; application of the following processors failed [SubtermCriterion (1ms)].
 | – Problem 6 remains open; application of the following processors failed [SubtermCriterion (1ms)].

The following open problems remain:



Open Dependency Pair Problem 2

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
sel#(N, XS)isNatural#(N)U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))isNatural#(activate(V1))isLNat#(n__take(V1, V2))activate#(V1)
U82#(pair(YS, ZS), X)pair#(cons(activate(X), YS), ZS)isNatural#(n__s(V1))isNatural#(activate(V1))
U51#(tt, N, XS)activate#(N)take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
head#(cons(N, XS))activate#(XS)snd#(pair(X, Y))isLNat#(X)
isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2))activate#(V1)isLNat#(n__tail(V1))activate#(V1)
U91#(tt, XS)activate#(XS)U81#(tt, N, X, XS)activate#(N)
activate#(n__isNatural(X))isNatural#(X)activate#(n__isLNat(X))isLNat#(X)
U101#(tt, N, XS)splitAt#(activate(N), activate(XS))activate#(n__fst(X))activate#(X)
activate#(n__sel(X1, X2))activate#(X2)isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
activate#(n__s(X))activate#(X)activate#(n__fst(X))fst#(activate(X))
head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)U51#(tt, N, XS)activate#(XS)
isLNat#(n__natsFrom(V1))activate#(V1)isNatural#(n__head(V1))activate#(V1)
afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))natsFrom#(N)isNatural#(N)
splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))fst#(pair(X, Y))isLNat#(X)
sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)isNatural#(n__s(V1))activate#(V1)
isLNat#(n__afterNth(V1, V2))activate#(V2)isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat#(n__tail(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))isNatural#(activate(V1))
take#(N, XS)isNatural#(N)isPLNat#(n__splitAt(V1, V2))activate#(V2)
head#(cons(N, XS))isNatural#(N)isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2))isNatural#(activate(V1))isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
activate#(n__take(X1, X2))activate#(X1)isLNat#(n__natsFrom(V1))isNatural#(activate(V1))
U11#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))
isLNat#(n__snd(V1))activate#(V1)isLNat#(n__snd(V1))isPLNat#(activate(V1))
snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)splitAt#(s(N), cons(X, XS))activate#(XS)
splitAt#(s(N), cons(X, XS))isNatural#(N)U41#(tt, N)activate#(N)
activate#(n__sel(X1, X2))activate#(X1)U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))
activate#(n__take(X1, X2))take#(activate(X1), activate(X2))activate#(n__snd(X))snd#(activate(X))
activate#(n__snd(X))activate#(X)activate#(n__cons(X1, X2))activate#(X1)
sel#(N, XS)and#(isNatural(N), n__isLNat(XS))U51#(tt, N, XS)afterNth#(activate(N), activate(XS))
tail#(cons(N, XS))isNatural#(N)isLNat#(n__take(V1, V2))activate#(V2)
tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__tail(X))tail#(activate(X))
isNatural#(n__sel(V1, V2))activate#(V2)activate#(n__natsFrom(X))activate#(X)
snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__pair(X1, X2))activate#(X2)U81#(tt, N, X, XS)activate#(X)
activate#(n__pair(X1, X2))activate#(X1)isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))U82#(pair(YS, ZS), X)activate#(X)
U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))activate#(n__and(X1, X2))activate#(X1)
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__natsFrom(X))natsFrom#(activate(X))
natsFrom#(N)U41#(isNatural(N), N)tail#(cons(N, XS))activate#(XS)
U21#(tt, X)activate#(X)U61#(tt, Y)activate#(Y)
isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))isNatural#(n__sel(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X2)U101#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))activate#(V1)isLNat#(n__fst(V1))activate#(V1)
splitAt#(0, XS)isLNat#(XS)activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))
isLNat#(n__afterNth(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X1)
activate#(n__take(X1, X2))activate#(X2)U11#(tt, N, XS)activate#(N)
activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1))isPLNat#(activate(V1))
activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2))activate#(V2)
U31#(tt, N)activate#(N)U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))
activate#(n__head(X))head#(activate(X))activate#(n__splitAt(X1, X2))activate#(X1)
splitAt#(0, XS)U71#(isLNat(XS), XS)isNatural#(n__head(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))activate#(V1)activate#(n__splitAt(X1, X2))activate#(X2)
U71#(tt, XS)activate#(XS)U101#(tt, N, XS)activate#(N)
U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, isNatural, n__snd, n__head, n__sel, n__splitAt, n__fst, n__s, activate, fst, n__0, U61, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, tail, n__natsFrom, splitAt, and, U71, n__and, n__cons, 0, s, U51, tt, take, U82, isLNat, U81, U11, n__pair, U31, afterNth, sel, U101, nil




Open Dependency Pair Problem 3

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
sel#(N, XS)isNatural#(N)U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))isNatural#(activate(V1))isLNat#(n__take(V1, V2))activate#(V1)
U82#(pair(YS, ZS), X)pair#(cons(activate(X), YS), ZS)isNatural#(n__s(V1))isNatural#(activate(V1))
U51#(tt, N, XS)activate#(N)take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
head#(cons(N, XS))activate#(XS)snd#(pair(X, Y))isLNat#(X)
isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2))activate#(V1)isLNat#(n__tail(V1))activate#(V1)
U91#(tt, XS)activate#(XS)U81#(tt, N, X, XS)activate#(N)
activate#(n__isNatural(X))isNatural#(X)activate#(n__isLNat(X))isLNat#(X)
U101#(tt, N, XS)splitAt#(activate(N), activate(XS))activate#(n__fst(X))activate#(X)
U82#(pair(YS, ZS), X)cons#(activate(X), YS)activate#(n__sel(X1, X2))activate#(X2)
isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__s(X))activate#(X)
activate#(n__fst(X))fst#(activate(X))head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS)activate#(XS)isLNat#(n__natsFrom(V1))activate#(V1)
isNatural#(n__head(V1))activate#(V1)afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))
natsFrom#(N)isNatural#(N)splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
fst#(pair(X, Y))isLNat#(X)sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1))activate#(V1)isLNat#(n__afterNth(V1, V2))activate#(V2)
isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))isNatural#(activate(V1))take#(N, XS)isNatural#(N)
isPLNat#(n__splitAt(V1, V2))activate#(V2)head#(cons(N, XS))isNatural#(N)
isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural#(n__sel(V1, V2))isNatural#(activate(V1))
isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__take(X1, X2))activate#(X1)
isLNat#(n__natsFrom(V1))isNatural#(activate(V1))U11#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))isLNat#(n__snd(V1))activate#(V1)
isLNat#(n__snd(V1))isPLNat#(activate(V1))snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS))activate#(XS)splitAt#(s(N), cons(X, XS))isNatural#(N)
U41#(tt, N)activate#(N)activate#(n__sel(X1, X2))activate#(X1)
U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2))take#(activate(X1), activate(X2))
activate#(n__snd(X))snd#(activate(X))activate#(n__snd(X))activate#(X)
activate#(n__cons(X1, X2))activate#(X1)sel#(N, XS)and#(isNatural(N), n__isLNat(XS))
U51#(tt, N, XS)afterNth#(activate(N), activate(XS))tail#(cons(N, XS))isNatural#(N)
isLNat#(n__take(V1, V2))activate#(V2)tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__tail(X))tail#(activate(X))isNatural#(n__sel(V1, V2))activate#(V2)
activate#(n__natsFrom(X))activate#(X)snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2))activate#(X2)
U81#(tt, N, X, XS)activate#(X)activate#(n__pair(X1, X2))activate#(X1)
isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
U82#(pair(YS, ZS), X)activate#(X)U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__and(X1, X2))activate#(X1)
activate#(n__natsFrom(X))natsFrom#(activate(X))natsFrom#(N)U41#(isNatural(N), N)
tail#(cons(N, XS))activate#(XS)U21#(tt, X)activate#(X)
U61#(tt, Y)activate#(Y)isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))
isNatural#(n__sel(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X2)
U101#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))activate#(V1)
isLNat#(n__fst(V1))activate#(V1)splitAt#(0, XS)isLNat#(XS)
activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))isLNat#(n__afterNth(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X1)U11#(tt, N, XS)activate#(N)
activate#(n__take(X1, X2))activate#(X2)activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1))isPLNat#(activate(V1))activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2))activate#(V2)U31#(tt, N)activate#(N)
U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))activate#(n__head(X))head#(activate(X))
activate#(n__splitAt(X1, X2))activate#(X1)splitAt#(0, XS)U71#(isLNat(XS), XS)
isLNat#(n__cons(V1, V2))activate#(V1)isNatural#(n__head(V1))isLNat#(activate(V1))
activate#(n__splitAt(X1, X2))activate#(X2)U71#(tt, XS)activate#(XS)
U101#(tt, N, XS)activate#(N)U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, isNatural, n__snd, n__head, n__sel, n__splitAt, n__fst, n__s, activate, fst, n__0, U61, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, tail, n__natsFrom, splitAt, and, U71, n__and, n__cons, 0, s, U51, tt, take, U82, isLNat, U81, U11, n__pair, U31, afterNth, sel, U101, nil




Open Dependency Pair Problem 4

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))sel#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))activate#(V1)isLNat#(n__take(V1, V2))isNatural#(activate(V1))
isNatural#(n__s(V1))isNatural#(activate(V1))U51#(tt, N, XS)activate#(N)
take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)head#(cons(N, XS))activate#(XS)
snd#(pair(X, Y))isLNat#(X)isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2))activate#(V1)
isLNat#(n__tail(V1))activate#(V1)U91#(tt, XS)activate#(XS)
activate#(n__isNatural(X))isNatural#(X)U81#(tt, N, X, XS)activate#(N)
activate#(n__isLNat(X))isLNat#(X)U101#(tt, N, XS)splitAt#(activate(N), activate(XS))
activate#(n__fst(X))activate#(X)activate#(n__sel(X1, X2))activate#(X2)
isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__fst(X))fst#(activate(X))
activate#(n__s(X))activate#(X)head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS)activate#(XS)isLNat#(n__natsFrom(V1))activate#(V1)
isNatural#(n__head(V1))activate#(V1)afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))
splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N)isNatural#(N)
fst#(pair(X, Y))isLNat#(X)sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1))activate#(V1)isLNat#(n__afterNth(V1, V2))activate#(V2)
U41#(tt, N)cons#(activate(N), n__natsFrom(n__s(activate(N))))isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat#(n__tail(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))isNatural#(activate(V1))
take#(N, XS)isNatural#(N)isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS))isNatural#(N)isPLNat#(n__splitAt(V1, V2))activate#(V2)
isNatural#(n__sel(V1, V2))isNatural#(activate(V1))isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
activate#(n__take(X1, X2))activate#(X1)isLNat#(n__natsFrom(V1))isNatural#(activate(V1))
U11#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))
isLNat#(n__snd(V1))isPLNat#(activate(V1))isLNat#(n__snd(V1))activate#(V1)
snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)splitAt#(s(N), cons(X, XS))isNatural#(N)
splitAt#(s(N), cons(X, XS))activate#(XS)U41#(tt, N)activate#(N)
activate#(n__sel(X1, X2))activate#(X1)U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))
activate#(n__take(X1, X2))take#(activate(X1), activate(X2))activate#(n__snd(X))snd#(activate(X))
activate#(n__snd(X))activate#(X)activate#(n__cons(X1, X2))activate#(X1)
sel#(N, XS)and#(isNatural(N), n__isLNat(XS))U51#(tt, N, XS)afterNth#(activate(N), activate(XS))
tail#(cons(N, XS))isNatural#(N)isLNat#(n__take(V1, V2))activate#(V2)
tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__tail(X))tail#(activate(X))
isNatural#(n__sel(V1, V2))activate#(V2)activate#(n__natsFrom(X))activate#(X)
snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__pair(X1, X2))activate#(X2)U81#(tt, N, X, XS)activate#(X)
activate#(n__pair(X1, X2))activate#(X1)tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))U82#(pair(YS, ZS), X)activate#(X)
U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__and(X1, X2))activate#(X1)activate#(n__natsFrom(X))natsFrom#(activate(X))
natsFrom#(N)U41#(isNatural(N), N)tail#(cons(N, XS))activate#(XS)
U21#(tt, X)activate#(X)U61#(tt, Y)activate#(Y)
isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))isNatural#(n__sel(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X2)U101#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))activate#(V1)isLNat#(n__fst(V1))activate#(V1)
splitAt#(0, XS)isLNat#(XS)activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))
isLNat#(n__afterNth(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X1)
U11#(tt, N, XS)activate#(N)activate#(n__take(X1, X2))activate#(X2)
activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1))isPLNat#(activate(V1))
activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2))activate#(V2)
U31#(tt, N)activate#(N)U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))
activate#(n__head(X))head#(activate(X))activate#(n__splitAt(X1, X2))activate#(X1)
splitAt#(0, XS)U71#(isLNat(XS), XS)activate#(n__splitAt(X1, X2))activate#(X2)
isNatural#(n__head(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))activate#(V1)
U71#(tt, XS)activate#(XS)U101#(tt, N, XS)activate#(N)
U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, isNatural, n__snd, n__head, n__sel, n__splitAt, n__fst, n__s, activate, fst, n__0, U61, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, tail, n__natsFrom, splitAt, and, U71, n__and, n__cons, 0, s, U51, tt, take, U82, isLNat, U81, U11, n__pair, U31, afterNth, sel, U101, nil




Open Dependency Pair Problem 5

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))sel#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))activate#(V1)isLNat#(n__take(V1, V2))isNatural#(activate(V1))
isNatural#(n__s(V1))isNatural#(activate(V1))U51#(tt, N, XS)activate#(N)
take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)head#(cons(N, XS))activate#(XS)
snd#(pair(X, Y))isLNat#(X)isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2))activate#(V1)
isLNat#(n__tail(V1))activate#(V1)U91#(tt, XS)activate#(XS)
activate#(n__isNatural(X))isNatural#(X)U81#(tt, N, X, XS)activate#(N)
activate#(n__isLNat(X))isLNat#(X)U101#(tt, N, XS)splitAt#(activate(N), activate(XS))
activate#(n__fst(X))activate#(X)activate#(n__sel(X1, X2))activate#(X2)
isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__fst(X))fst#(activate(X))
activate#(n__s(X))activate#(X)head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS)activate#(XS)isLNat#(n__natsFrom(V1))activate#(V1)
isNatural#(n__head(V1))activate#(V1)afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))
natsFrom#(N)isNatural#(N)splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
fst#(pair(X, Y))isLNat#(X)sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1))activate#(V1)isLNat#(n__afterNth(V1, V2))activate#(V2)
isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))isNatural#(activate(V1))take#(N, XS)isNatural#(N)
head#(cons(N, XS))isNatural#(N)isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isPLNat#(n__splitAt(V1, V2))activate#(V2)isNatural#(n__sel(V1, V2))isNatural#(activate(V1))
isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__take(X1, X2))activate#(X1)
isLNat#(n__natsFrom(V1))isNatural#(activate(V1))U11#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))isLNat#(n__snd(V1))isPLNat#(activate(V1))
isLNat#(n__snd(V1))activate#(V1)snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS))activate#(XS)splitAt#(s(N), cons(X, XS))isNatural#(N)
U41#(tt, N)activate#(N)activate#(n__sel(X1, X2))activate#(X1)
U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2))take#(activate(X1), activate(X2))
activate#(n__snd(X))snd#(activate(X))activate#(n__snd(X))activate#(X)
activate#(n__cons(X1, X2))activate#(X1)sel#(N, XS)and#(isNatural(N), n__isLNat(XS))
U51#(tt, N, XS)afterNth#(activate(N), activate(XS))tail#(cons(N, XS))isNatural#(N)
isLNat#(n__take(V1, V2))activate#(V2)tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__tail(X))tail#(activate(X))isNatural#(n__sel(V1, V2))activate#(V2)
activate#(n__natsFrom(X))activate#(X)snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2))activate#(X2)
U81#(tt, N, X, XS)activate#(X)activate#(n__pair(X1, X2))activate#(X1)
isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
U82#(pair(YS, ZS), X)activate#(X)U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__and(X1, X2))activate#(X1)
activate#(n__natsFrom(X))natsFrom#(activate(X))tail#(cons(N, XS))activate#(XS)
natsFrom#(N)U41#(isNatural(N), N)U21#(tt, X)activate#(X)
U61#(tt, Y)activate#(Y)isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))
isNatural#(n__sel(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X2)
U101#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))activate#(V1)
isLNat#(n__fst(V1))activate#(V1)splitAt#(0, XS)isLNat#(XS)
activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))isLNat#(n__afterNth(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X1)U11#(tt, N, XS)activate#(N)
activate#(n__take(X1, X2))activate#(X2)activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1))isPLNat#(activate(V1))activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2))activate#(V2)U31#(tt, N)activate#(N)
U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))activate#(n__head(X))head#(activate(X))
activate#(n__splitAt(X1, X2))activate#(X1)splitAt#(0, XS)U71#(isLNat(XS), XS)
activate#(n__splitAt(X1, X2))activate#(X2)isNatural#(n__head(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))activate#(V1)U71#(tt, XS)activate#(XS)
U101#(tt, N, XS)activate#(N)U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, isNatural, n__snd, n__head, n__sel, n__splitAt, n__fst, n__s, activate, fst, n__0, U61, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, tail, n__natsFrom, splitAt, and, U71, n__and, n__cons, 0, s, U51, tt, take, U82, isLNat, U81, U11, n__pair, U31, afterNth, sel, U101, nil




Open Dependency Pair Problem 6

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))sel#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))activate#(V1)isLNat#(n__take(V1, V2))isNatural#(activate(V1))
isNatural#(n__s(V1))isNatural#(activate(V1))take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
U51#(tt, N, XS)activate#(N)head#(cons(N, XS))activate#(XS)
snd#(pair(X, Y))isLNat#(X)isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2))activate#(V1)
isLNat#(n__tail(V1))activate#(V1)U91#(tt, XS)activate#(XS)
U81#(tt, N, X, XS)activate#(N)activate#(n__isNatural(X))isNatural#(X)
activate#(n__isLNat(X))isLNat#(X)U101#(tt, N, XS)splitAt#(activate(N), activate(XS))
activate#(n__fst(X))activate#(X)activate#(n__sel(X1, X2))activate#(X2)
isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__s(X))activate#(X)
activate#(n__fst(X))fst#(activate(X))head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS)activate#(XS)isLNat#(n__natsFrom(V1))activate#(V1)
isNatural#(n__head(V1))activate#(V1)afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))
splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N)isNatural#(N)
fst#(pair(X, Y))isLNat#(X)sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1))activate#(V1)isLNat#(n__afterNth(V1, V2))activate#(V2)
isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))isNatural#(activate(V1))take#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS))isNatural#(N)
isPLNat#(n__splitAt(V1, V2))activate#(V2)isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2))isNatural#(activate(V1))activate#(n__take(X1, X2))activate#(X1)
isLNat#(n__natsFrom(V1))isNatural#(activate(V1))U11#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))isLNat#(n__snd(V1))activate#(V1)
isLNat#(n__snd(V1))isPLNat#(activate(V1))snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS))isNatural#(N)splitAt#(s(N), cons(X, XS))activate#(XS)
U41#(tt, N)activate#(N)activate#(n__sel(X1, X2))activate#(X1)
U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2))take#(activate(X1), activate(X2))
activate#(n__snd(X))snd#(activate(X))activate#(n__snd(X))activate#(X)
activate#(n__cons(X1, X2))activate#(X1)sel#(N, XS)and#(isNatural(N), n__isLNat(XS))
U51#(tt, N, XS)afterNth#(activate(N), activate(XS))tail#(cons(N, XS))isNatural#(N)
isLNat#(n__take(V1, V2))activate#(V2)tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__tail(X))tail#(activate(X))isNatural#(n__sel(V1, V2))activate#(V2)
activate#(n__natsFrom(X))activate#(X)snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2))activate#(X2)
U81#(tt, N, X, XS)activate#(X)activate#(n__pair(X1, X2))activate#(X1)
tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))U82#(pair(YS, ZS), X)activate#(X)
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__and(X1, X2))activate#(X1)
activate#(n__natsFrom(X))natsFrom#(activate(X))natsFrom#(N)U41#(isNatural(N), N)
tail#(cons(N, XS))activate#(XS)U21#(tt, X)activate#(X)
U61#(tt, Y)activate#(Y)isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))
isNatural#(n__sel(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X2)
U101#(tt, N, XS)activate#(XS)U71#(tt, XS)pair#(nil, activate(XS))
isPLNat#(n__splitAt(V1, V2))activate#(V1)isLNat#(n__fst(V1))activate#(V1)
splitAt#(0, XS)isLNat#(XS)activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))
isLNat#(n__afterNth(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X1)
U11#(tt, N, XS)activate#(N)activate#(n__take(X1, X2))activate#(X2)
activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1))isPLNat#(activate(V1))
activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2))activate#(V2)
U31#(tt, N)activate#(N)U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))
activate#(n__head(X))head#(activate(X))activate#(n__splitAt(X1, X2))activate#(X1)
splitAt#(0, XS)U71#(isLNat(XS), XS)activate#(n__splitAt(X1, X2))activate#(X2)
isNatural#(n__head(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))activate#(V1)
U71#(tt, XS)activate#(XS)U101#(tt, N, XS)activate#(N)
U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, isNatural, n__snd, n__head, n__sel, n__splitAt, n__fst, n__s, activate, fst, n__0, U61, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, tail, n__natsFrom, splitAt, and, U71, n__and, n__cons, 0, s, U51, tt, take, U82, isLNat, U81, U11, n__pair, U31, afterNth, sel, U101, nil


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
sel#(N, XS)isNatural#(N)U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)afterNth#(N, XS)isNatural#(N)
activate#(n__tail(X))activate#(X)splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))activate#(n__cons(X1, X2))cons#(activate(X1), X2)
take#(N, XS)and#(isNatural(N), n__isLNat(XS))fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
isLNat#(n__cons(V1, V2))activate#(V2)U82#(pair(YS, ZS), X)pair#(cons(activate(X), YS), ZS)
isLNat#(n__take(V1, V2))isNatural#(activate(V1))isLNat#(n__take(V1, V2))activate#(V1)
isNatural#(n__s(V1))isNatural#(activate(V1))U51#(tt, N, XS)activate#(N)
take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)head#(cons(N, XS))activate#(XS)
snd#(pair(X, Y))isLNat#(X)isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2))activate#(V1)
isLNat#(n__tail(V1))activate#(V1)U91#(tt, XS)activate#(XS)
U81#(tt, N, X, XS)activate#(N)activate#(n__isNatural(X))isNatural#(X)
activate#(n__isLNat(X))isLNat#(X)U101#(tt, N, XS)splitAt#(activate(N), activate(XS))
activate#(n__fst(X))activate#(X)U82#(pair(YS, ZS), X)cons#(activate(X), YS)
activate#(n__sel(X1, X2))activate#(X2)isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
activate#(n__s(X))activate#(X)activate#(n__fst(X))fst#(activate(X))
head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)U51#(tt, N, XS)activate#(XS)
isLNat#(n__natsFrom(V1))activate#(V1)isNatural#(n__head(V1))activate#(V1)
afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
natsFrom#(N)isNatural#(N)fst#(pair(X, Y))isLNat#(X)
sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)isNatural#(n__s(V1))activate#(V1)
isLNat#(n__afterNth(V1, V2))activate#(V2)U41#(tt, N)cons#(activate(N), n__natsFrom(n__s(activate(N))))
isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))isNatural#(activate(V1))take#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS))isNatural#(N)
isPLNat#(n__splitAt(V1, V2))activate#(V2)isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2))isNatural#(activate(V1))activate#(n__take(X1, X2))activate#(X1)
isLNat#(n__natsFrom(V1))isNatural#(activate(V1))U11#(tt, N, XS)activate#(XS)
activate#(n__pair(X1, X2))pair#(activate(X1), activate(X2))isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))
activate#(n__s(X))s#(activate(X))isLNat#(n__snd(V1))isPLNat#(activate(V1))
isLNat#(n__snd(V1))activate#(V1)snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS))isNatural#(N)splitAt#(s(N), cons(X, XS))activate#(XS)
U41#(tt, N)activate#(N)activate#(n__sel(X1, X2))activate#(X1)
U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2))take#(activate(X1), activate(X2))
activate#(n__snd(X))snd#(activate(X))activate#(n__snd(X))activate#(X)
activate#(n__cons(X1, X2))activate#(X1)sel#(N, XS)and#(isNatural(N), n__isLNat(XS))
U51#(tt, N, XS)afterNth#(activate(N), activate(XS))tail#(cons(N, XS))isNatural#(N)
isLNat#(n__take(V1, V2))activate#(V2)tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__tail(X))tail#(activate(X))isNatural#(n__sel(V1, V2))activate#(V2)
activate#(n__natsFrom(X))activate#(X)snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2))activate#(X2)
activate#(n__0)0#U81#(tt, N, X, XS)activate#(X)
activate#(n__pair(X1, X2))activate#(X1)isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))U82#(pair(YS, ZS), X)activate#(X)
U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))activate#(n__and(X1, X2))activate#(X1)
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__natsFrom(X))natsFrom#(activate(X))
tail#(cons(N, XS))activate#(XS)natsFrom#(N)U41#(isNatural(N), N)
U21#(tt, X)activate#(X)isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))
U61#(tt, Y)activate#(Y)isNatural#(n__sel(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X2)U101#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))activate#(V1)U71#(tt, XS)pair#(nil, activate(XS))
isLNat#(n__fst(V1))activate#(V1)U71#(tt, XS)nil#
splitAt#(0, XS)isLNat#(XS)activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))
isLNat#(n__afterNth(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X1)
U11#(tt, N, XS)activate#(N)activate#(n__take(X1, X2))activate#(X2)
activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1))isPLNat#(activate(V1))
activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2))activate#(V2)
U31#(tt, N)activate#(N)U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))
activate#(n__nil)nil#activate#(n__head(X))head#(activate(X))
activate#(n__splitAt(X1, X2))activate#(X1)splitAt#(0, XS)U71#(isLNat(XS), XS)
isNatural#(n__head(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))activate#(V1)
activate#(n__splitAt(X1, X2))activate#(X2)U71#(tt, XS)activate#(XS)
U101#(tt, N, XS)activate#(N)U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, isNatural, natsFrom, n__snd, n__head, n__sel, n__fst, n__splitAt, fst, activate, n__s, U61, n__0, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, n__natsFrom, tail, splitAt, U71, and, n__cons, n__and, 0, U51, s, tt, U82, take, U81, isLNat, U11, n__pair, afterNth, U31, sel, nil, U101

Strategy


The following SCCs where found

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))sel#(N, XS) → isNatural#(N)
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
U82#(pair(YS, ZS), X) → pair#(cons(activate(X), YS), ZS)isLNat#(n__take(V1, V2)) → activate#(V1)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isNatural#(n__s(V1)) → isNatural#(activate(V1))
take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)U51#(tt, N, XS) → activate#(N)
head#(cons(N, XS)) → activate#(XS)snd#(pair(X, Y)) → isLNat#(X)
isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2)) → activate#(V1)isLNat#(n__tail(V1)) → activate#(V1)
U91#(tt, XS) → activate#(XS)activate#(n__isNatural(X)) → isNatural#(X)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isLNat(X)) → isLNat#(X)
U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))activate#(n__fst(X)) → activate#(X)
U82#(pair(YS, ZS), X) → cons#(activate(X), YS)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__fst(X)) → fst#(activate(X))activate#(n__s(X)) → activate#(X)
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N) → isNatural#(N)
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))take#(N, XS) → isNatural#(N)
isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → isNatural#(N)
isPLNat#(n__splitAt(V1, V2)) → activate#(V2)isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))activate#(n__take(X1, X2)) → activate#(X1)
isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))U11#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))isLNat#(n__snd(V1)) → isPLNat#(activate(V1))
isLNat#(n__snd(V1)) → activate#(V1)snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS)) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → activate#(XS)
U41#(tt, N) → activate#(N)activate#(n__sel(X1, X2)) → activate#(X1)
U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))
activate#(n__snd(X)) → snd#(activate(X))activate#(n__snd(X)) → activate#(X)
sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))activate#(n__cons(X1, X2)) → activate#(X1)
U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))tail#(cons(N, XS)) → isNatural#(N)
isLNat#(n__take(V1, V2)) → activate#(V2)tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
isNatural#(n__sel(V1, V2)) → activate#(V2)activate#(n__tail(X)) → tail#(activate(X))
activate#(n__natsFrom(X)) → activate#(X)snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2)) → activate#(X2)
U81#(tt, N, X, XS) → activate#(X)tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))activate#(n__pair(X1, X2)) → activate#(X1)
U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))U82#(pair(YS, ZS), X) → activate#(X)
activate#(n__and(X1, X2)) → activate#(X1)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__natsFrom(X)) → natsFrom#(activate(X))tail#(cons(N, XS)) → activate#(XS)
natsFrom#(N) → U41#(isNatural(N), N)U21#(tt, X) → activate#(X)
isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))U61#(tt, Y) → activate#(Y)
isNatural#(n__sel(V1, V2)) → activate#(V1)activate#(n__afterNth(X1, X2)) → activate#(X2)
U101#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → activate#(V1)
isLNat#(n__fst(V1)) → activate#(V1)splitAt#(0, XS) → isLNat#(XS)
activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))activate#(n__afterNth(X1, X2)) → activate#(X1)
isLNat#(n__afterNth(V1, V2)) → activate#(V1)activate#(n__take(X1, X2)) → activate#(X2)
U11#(tt, N, XS) → activate#(N)activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1)) → isPLNat#(activate(V1))activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2)) → activate#(V2)U31#(tt, N) → activate#(N)
activate#(n__head(X)) → head#(activate(X))U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))
activate#(n__splitAt(X1, X2)) → activate#(X1)splitAt#(0, XS) → U71#(isLNat(XS), XS)
activate#(n__splitAt(X1, X2)) → activate#(X2)isNatural#(n__head(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → activate#(V1)U71#(tt, XS) → activate#(XS)
U101#(tt, N, XS) → activate#(N)U81#(tt, N, X, XS) → activate#(XS)

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
sel#(N, XS) → isNatural#(N)U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isLNat#(n__take(V1, V2)) → activate#(V1)
isNatural#(n__s(V1)) → isNatural#(activate(V1))U51#(tt, N, XS) → activate#(N)
take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)head#(cons(N, XS)) → activate#(XS)
snd#(pair(X, Y)) → isLNat#(X)isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2)) → activate#(V1)
isLNat#(n__tail(V1)) → activate#(V1)U91#(tt, XS) → activate#(XS)
activate#(n__isNatural(X)) → isNatural#(X)U81#(tt, N, X, XS) → activate#(N)
activate#(n__isLNat(X)) → isLNat#(X)U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))
activate#(n__fst(X)) → activate#(X)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__fst(X)) → fst#(activate(X))activate#(n__s(X)) → activate#(X)
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
natsFrom#(N) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))take#(N, XS) → isNatural#(N)
isPLNat#(n__splitAt(V1, V2)) → activate#(V2)head#(cons(N, XS)) → isNatural#(N)
isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))
isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__take(X1, X2)) → activate#(X1)
isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))U11#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))isLNat#(n__snd(V1)) → isPLNat#(activate(V1))
isLNat#(n__snd(V1)) → activate#(V1)snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS)) → activate#(XS)splitAt#(s(N), cons(X, XS)) → isNatural#(N)
U41#(tt, N) → activate#(N)activate#(n__sel(X1, X2)) → activate#(X1)
U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))
activate#(n__snd(X)) → snd#(activate(X))activate#(n__snd(X)) → activate#(X)
sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))activate#(n__cons(X1, X2)) → activate#(X1)
U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))tail#(cons(N, XS)) → isNatural#(N)
isLNat#(n__take(V1, V2)) → activate#(V2)tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
isNatural#(n__sel(V1, V2)) → activate#(V2)activate#(n__tail(X)) → tail#(activate(X))
activate#(n__natsFrom(X)) → activate#(X)snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2)) → activate#(X2)
U81#(tt, N, X, XS) → activate#(X)isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))activate#(n__pair(X1, X2)) → activate#(X1)
U82#(pair(YS, ZS), X) → activate#(X)U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))
activate#(n__and(X1, X2)) → activate#(X1)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__natsFrom(X)) → natsFrom#(activate(X))tail#(cons(N, XS)) → activate#(XS)
natsFrom#(N) → U41#(isNatural(N), N)U21#(tt, X) → activate#(X)
isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))U61#(tt, Y) → activate#(Y)
isNatural#(n__sel(V1, V2)) → activate#(V1)activate#(n__afterNth(X1, X2)) → activate#(X2)
U101#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → activate#(V1)
U71#(tt, XS) → pair#(nil, activate(XS))isLNat#(n__fst(V1)) → activate#(V1)
splitAt#(0, XS) → isLNat#(XS)activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))
activate#(n__afterNth(X1, X2)) → activate#(X1)isLNat#(n__afterNth(V1, V2)) → activate#(V1)
activate#(n__take(X1, X2)) → activate#(X2)U11#(tt, N, XS) → activate#(N)
activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1)) → isPLNat#(activate(V1))
activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2)) → activate#(V2)
U31#(tt, N) → activate#(N)activate#(n__head(X)) → head#(activate(X))
U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))activate#(n__splitAt(X1, X2)) → activate#(X1)
splitAt#(0, XS) → U71#(isLNat(XS), XS)isLNat#(n__cons(V1, V2)) → activate#(V1)
isNatural#(n__head(V1)) → isLNat#(activate(V1))activate#(n__splitAt(X1, X2)) → activate#(X2)
U71#(tt, XS) → activate#(XS)U101#(tt, N, XS) → activate#(N)
U81#(tt, N, X, XS) → activate#(XS)

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))sel#(N, XS) → isNatural#(N)
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
U82#(pair(YS, ZS), X) → pair#(cons(activate(X), YS), ZS)isLNat#(n__take(V1, V2)) → activate#(V1)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isNatural#(n__s(V1)) → isNatural#(activate(V1))
take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)U51#(tt, N, XS) → activate#(N)
head#(cons(N, XS)) → activate#(XS)snd#(pair(X, Y)) → isLNat#(X)
isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2)) → activate#(V1)isLNat#(n__tail(V1)) → activate#(V1)
U91#(tt, XS) → activate#(XS)activate#(n__isNatural(X)) → isNatural#(X)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isLNat(X)) → isLNat#(X)
U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))activate#(n__fst(X)) → activate#(X)
activate#(n__sel(X1, X2)) → activate#(X2)activate#(n__fst(X)) → fst#(activate(X))
activate#(n__s(X)) → activate#(X)isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)U51#(tt, N, XS) → activate#(XS)
isLNat#(n__natsFrom(V1)) → activate#(V1)afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))
isNatural#(n__head(V1)) → activate#(V1)splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
natsFrom#(N) → isNatural#(N)fst#(pair(X, Y)) → isLNat#(X)
sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)isNatural#(n__s(V1)) → activate#(V1)
isLNat#(n__afterNth(V1, V2)) → activate#(V2)isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat#(n__tail(V1)) → isLNat#(activate(V1))isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))
take#(N, XS) → isNatural#(N)isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS)) → isNatural#(N)isPLNat#(n__splitAt(V1, V2)) → activate#(V2)
isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))
activate#(n__take(X1, X2)) → activate#(X1)isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))
U11#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))
isLNat#(n__snd(V1)) → isPLNat#(activate(V1))isLNat#(n__snd(V1)) → activate#(V1)
snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)splitAt#(s(N), cons(X, XS)) → isNatural#(N)
splitAt#(s(N), cons(X, XS)) → activate#(XS)U41#(tt, N) → activate#(N)
activate#(n__sel(X1, X2)) → activate#(X1)U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))
activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))activate#(n__snd(X)) → snd#(activate(X))
activate#(n__snd(X)) → activate#(X)sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))
activate#(n__cons(X1, X2)) → activate#(X1)U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))
tail#(cons(N, XS)) → isNatural#(N)isLNat#(n__take(V1, V2)) → activate#(V2)
tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))isNatural#(n__sel(V1, V2)) → activate#(V2)
activate#(n__tail(X)) → tail#(activate(X))activate#(n__natsFrom(X)) → activate#(X)
snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__pair(X1, X2)) → activate#(X2)U81#(tt, N, X, XS) → activate#(X)
tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
activate#(n__pair(X1, X2)) → activate#(X1)U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))
U82#(pair(YS, ZS), X) → activate#(X)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__and(X1, X2)) → activate#(X1)activate#(n__natsFrom(X)) → natsFrom#(activate(X))
tail#(cons(N, XS)) → activate#(XS)natsFrom#(N) → U41#(isNatural(N), N)
U21#(tt, X) → activate#(X)isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))
U61#(tt, Y) → activate#(Y)isNatural#(n__sel(V1, V2)) → activate#(V1)
activate#(n__afterNth(X1, X2)) → activate#(X2)U101#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → activate#(V1)isLNat#(n__fst(V1)) → activate#(V1)
splitAt#(0, XS) → isLNat#(XS)activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))
activate#(n__afterNth(X1, X2)) → activate#(X1)isLNat#(n__afterNth(V1, V2)) → activate#(V1)
U11#(tt, N, XS) → activate#(N)activate#(n__take(X1, X2)) → activate#(X2)
activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1)) → isPLNat#(activate(V1))
activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2)) → activate#(V2)
U31#(tt, N) → activate#(N)activate#(n__head(X)) → head#(activate(X))
U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))activate#(n__splitAt(X1, X2)) → activate#(X1)
splitAt#(0, XS) → U71#(isLNat(XS), XS)activate#(n__splitAt(X1, X2)) → activate#(X2)
isLNat#(n__cons(V1, V2)) → activate#(V1)isNatural#(n__head(V1)) → isLNat#(activate(V1))
U71#(tt, XS) → activate#(XS)U101#(tt, N, XS) → activate#(N)
U81#(tt, N, X, XS) → activate#(XS)

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
sel#(N, XS) → isNatural#(N)U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isLNat#(n__take(V1, V2)) → activate#(V1)
isNatural#(n__s(V1)) → isNatural#(activate(V1))take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
U51#(tt, N, XS) → activate#(N)head#(cons(N, XS)) → activate#(XS)
snd#(pair(X, Y)) → isLNat#(X)isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2)) → activate#(V1)
isLNat#(n__tail(V1)) → activate#(V1)U91#(tt, XS) → activate#(XS)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isNatural(X)) → isNatural#(X)
activate#(n__isLNat(X)) → isLNat#(X)U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))
activate#(n__fst(X)) → activate#(X)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__s(X)) → activate#(X)activate#(n__fst(X)) → fst#(activate(X))
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N) → isNatural#(N)
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))take#(N, XS) → isNatural#(N)
isPLNat#(n__splitAt(V1, V2)) → activate#(V2)isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS)) → isNatural#(N)isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))activate#(n__take(X1, X2)) → activate#(X1)
isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))U11#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))isLNat#(n__snd(V1)) → activate#(V1)
isLNat#(n__snd(V1)) → isPLNat#(activate(V1))snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS)) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → activate#(XS)
U41#(tt, N) → activate#(N)activate#(n__sel(X1, X2)) → activate#(X1)
U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))
activate#(n__snd(X)) → snd#(activate(X))activate#(n__snd(X)) → activate#(X)
sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))activate#(n__cons(X1, X2)) → activate#(X1)
U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))tail#(cons(N, XS)) → isNatural#(N)
isLNat#(n__take(V1, V2)) → activate#(V2)tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
isNatural#(n__sel(V1, V2)) → activate#(V2)activate#(n__tail(X)) → tail#(activate(X))
activate#(n__natsFrom(X)) → activate#(X)snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2)) → activate#(X2)
U81#(tt, N, X, XS) → activate#(X)tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))activate#(n__pair(X1, X2)) → activate#(X1)
U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))U82#(pair(YS, ZS), X) → activate#(X)
activate#(n__and(X1, X2)) → activate#(X1)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__natsFrom(X)) → natsFrom#(activate(X))natsFrom#(N) → U41#(isNatural(N), N)
tail#(cons(N, XS)) → activate#(XS)U21#(tt, X) → activate#(X)
isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))U61#(tt, Y) → activate#(Y)
isNatural#(n__sel(V1, V2)) → activate#(V1)activate#(n__afterNth(X1, X2)) → activate#(X2)
U101#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → activate#(V1)
isLNat#(n__fst(V1)) → activate#(V1)splitAt#(0, XS) → isLNat#(XS)
activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))activate#(n__afterNth(X1, X2)) → activate#(X1)
isLNat#(n__afterNth(V1, V2)) → activate#(V1)activate#(n__take(X1, X2)) → activate#(X2)
U11#(tt, N, XS) → activate#(N)activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1)) → isPLNat#(activate(V1))activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2)) → activate#(V2)U31#(tt, N) → activate#(N)
activate#(n__head(X)) → head#(activate(X))U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))
activate#(n__splitAt(X1, X2)) → activate#(X1)splitAt#(0, XS) → U71#(isLNat(XS), XS)
isLNat#(n__cons(V1, V2)) → activate#(V1)isNatural#(n__head(V1)) → isLNat#(activate(V1))
activate#(n__splitAt(X1, X2)) → activate#(X2)U71#(tt, XS) → activate#(XS)
U101#(tt, N, XS) → activate#(N)U81#(tt, N, X, XS) → activate#(XS)

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
sel#(N, XS) → isNatural#(N)U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isLNat#(n__take(V1, V2)) → activate#(V1)
isNatural#(n__s(V1)) → isNatural#(activate(V1))take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
U51#(tt, N, XS) → activate#(N)head#(cons(N, XS)) → activate#(XS)
snd#(pair(X, Y)) → isLNat#(X)isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2)) → activate#(V1)
isLNat#(n__tail(V1)) → activate#(V1)U91#(tt, XS) → activate#(XS)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isNatural(X)) → isNatural#(X)
activate#(n__isLNat(X)) → isLNat#(X)U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))
activate#(n__fst(X)) → activate#(X)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__s(X)) → activate#(X)activate#(n__fst(X)) → fst#(activate(X))
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
natsFrom#(N) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
U41#(tt, N) → cons#(activate(N), n__natsFrom(n__s(activate(N))))isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat#(n__tail(V1)) → isLNat#(activate(V1))isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))
take#(N, XS) → isNatural#(N)isPLNat#(n__splitAt(V1, V2)) → activate#(V2)
head#(cons(N, XS)) → isNatural#(N)isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))
activate#(n__take(X1, X2)) → activate#(X1)isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))
U11#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))
isLNat#(n__snd(V1)) → activate#(V1)isLNat#(n__snd(V1)) → isPLNat#(activate(V1))
snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)splitAt#(s(N), cons(X, XS)) → activate#(XS)
splitAt#(s(N), cons(X, XS)) → isNatural#(N)U41#(tt, N) → activate#(N)
activate#(n__sel(X1, X2)) → activate#(X1)U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))
activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))activate#(n__snd(X)) → snd#(activate(X))
activate#(n__snd(X)) → activate#(X)sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))
activate#(n__cons(X1, X2)) → activate#(X1)U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))
tail#(cons(N, XS)) → isNatural#(N)isLNat#(n__take(V1, V2)) → activate#(V2)
tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))isNatural#(n__sel(V1, V2)) → activate#(V2)
activate#(n__tail(X)) → tail#(activate(X))activate#(n__natsFrom(X)) → activate#(X)
snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__pair(X1, X2)) → activate#(X2)U81#(tt, N, X, XS) → activate#(X)
isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
activate#(n__pair(X1, X2)) → activate#(X1)U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))
U82#(pair(YS, ZS), X) → activate#(X)activate#(n__and(X1, X2)) → activate#(X1)
afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__natsFrom(X)) → natsFrom#(activate(X))
tail#(cons(N, XS)) → activate#(XS)natsFrom#(N) → U41#(isNatural(N), N)
U21#(tt, X) → activate#(X)isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))
U61#(tt, Y) → activate#(Y)isNatural#(n__sel(V1, V2)) → activate#(V1)
activate#(n__afterNth(X1, X2)) → activate#(X2)U101#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → activate#(V1)isLNat#(n__fst(V1)) → activate#(V1)
splitAt#(0, XS) → isLNat#(XS)activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))
activate#(n__afterNth(X1, X2)) → activate#(X1)isLNat#(n__afterNth(V1, V2)) → activate#(V1)
activate#(n__take(X1, X2)) → activate#(X2)U11#(tt, N, XS) → activate#(N)
activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1)) → isPLNat#(activate(V1))
activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2)) → activate#(V2)
U31#(tt, N) → activate#(N)activate#(n__head(X)) → head#(activate(X))
U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))activate#(n__splitAt(X1, X2)) → activate#(X1)
splitAt#(0, XS) → U71#(isLNat(XS), XS)isLNat#(n__cons(V1, V2)) → activate#(V1)
isNatural#(n__head(V1)) → isLNat#(activate(V1))activate#(n__splitAt(X1, X2)) → activate#(X2)
U71#(tt, XS) → activate#(XS)U101#(tt, N, XS) → activate#(N)
U81#(tt, N, X, XS) → activate#(XS)

Problem 2: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))sel#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)activate#(n__tail(X))activate#(X)
afterNth#(N, XS)isNatural#(N)U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))isNatural#(activate(V1))isLNat#(n__take(V1, V2))activate#(V1)
U82#(pair(YS, ZS), X)pair#(cons(activate(X), YS), ZS)isNatural#(n__s(V1))isNatural#(activate(V1))
U51#(tt, N, XS)activate#(N)take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
head#(cons(N, XS))activate#(XS)snd#(pair(X, Y))isLNat#(X)
isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2))activate#(V1)isLNat#(n__tail(V1))activate#(V1)
U91#(tt, XS)activate#(XS)activate#(n__isNatural(X))isNatural#(X)
U81#(tt, N, X, XS)activate#(N)activate#(n__isLNat(X))isLNat#(X)
U101#(tt, N, XS)splitAt#(activate(N), activate(XS))activate#(n__fst(X))activate#(X)
activate#(n__sel(X1, X2))activate#(X2)activate#(n__fst(X))fst#(activate(X))
activate#(n__s(X))activate#(X)isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)U51#(tt, N, XS)activate#(XS)
isLNat#(n__natsFrom(V1))activate#(V1)afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))
isNatural#(n__head(V1))activate#(V1)splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
natsFrom#(N)isNatural#(N)fst#(pair(X, Y))isLNat#(X)
sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)isNatural#(n__s(V1))activate#(V1)
isLNat#(n__afterNth(V1, V2))activate#(V2)isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat#(n__tail(V1))isLNat#(activate(V1))isLNat#(n__cons(V1, V2))isNatural#(activate(V1))
take#(N, XS)isNatural#(N)isPLNat#(n__splitAt(V1, V2))activate#(V2)
head#(cons(N, XS))isNatural#(N)isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2))isNatural#(activate(V1))isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
activate#(n__take(X1, X2))activate#(X1)isLNat#(n__natsFrom(V1))isNatural#(activate(V1))
U11#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))
isLNat#(n__snd(V1))activate#(V1)isLNat#(n__snd(V1))isPLNat#(activate(V1))
snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)splitAt#(s(N), cons(X, XS))activate#(XS)
splitAt#(s(N), cons(X, XS))isNatural#(N)U41#(tt, N)activate#(N)
activate#(n__sel(X1, X2))activate#(X1)U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))
activate#(n__take(X1, X2))take#(activate(X1), activate(X2))activate#(n__snd(X))snd#(activate(X))
activate#(n__snd(X))activate#(X)activate#(n__cons(X1, X2))activate#(X1)
sel#(N, XS)and#(isNatural(N), n__isLNat(XS))U51#(tt, N, XS)afterNth#(activate(N), activate(XS))
tail#(cons(N, XS))isNatural#(N)isLNat#(n__take(V1, V2))activate#(V2)
tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__tail(X))tail#(activate(X))
isNatural#(n__sel(V1, V2))activate#(V2)activate#(n__natsFrom(X))activate#(X)
snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__pair(X1, X2))activate#(X2)U81#(tt, N, X, XS)activate#(X)
activate#(n__pair(X1, X2))activate#(X1)isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))
tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))U82#(pair(YS, ZS), X)activate#(X)
U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))activate#(n__and(X1, X2))activate#(X1)
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__natsFrom(X))natsFrom#(activate(X))
natsFrom#(N)U41#(isNatural(N), N)tail#(cons(N, XS))activate#(XS)
U21#(tt, X)activate#(X)U61#(tt, Y)activate#(Y)
isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))isNatural#(n__sel(V1, V2))activate#(V1)
activate#(n__afterNth(X1, X2))activate#(X2)U101#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))activate#(V1)isLNat#(n__fst(V1))activate#(V1)
splitAt#(0, XS)isLNat#(XS)activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))
activate#(n__afterNth(X1, X2))activate#(X1)isLNat#(n__afterNth(V1, V2))activate#(V1)
U11#(tt, N, XS)activate#(N)activate#(n__take(X1, X2))activate#(X2)
activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))isLNat#(n__fst(V1))isPLNat#(activate(V1))
activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))isPLNat#(n__pair(V1, V2))activate#(V2)
U31#(tt, N)activate#(N)activate#(n__head(X))head#(activate(X))
U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))activate#(n__splitAt(X1, X2))activate#(X1)
splitAt#(0, XS)U71#(isLNat(XS), XS)activate#(n__splitAt(X1, X2))activate#(X2)
isLNat#(n__cons(V1, V2))activate#(V1)isNatural#(n__head(V1))isLNat#(activate(V1))
U71#(tt, XS)activate#(XS)U101#(tt, N, XS)activate#(N)
U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, isNatural, natsFrom, n__snd, n__head, n__sel, n__fst, n__splitAt, fst, activate, n__s, U61, n__0, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, n__natsFrom, tail, splitAt, U71, and, n__cons, n__and, 0, U51, s, tt, U82, take, U81, isLNat, U11, n__pair, afterNth, U31, sel, nil, U101

Strategy


The following SCCs where found

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
sel#(N, XS) → isNatural#(N)U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isLNat#(n__take(V1, V2)) → activate#(V1)
isNatural#(n__s(V1)) → isNatural#(activate(V1))take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
U51#(tt, N, XS) → activate#(N)head#(cons(N, XS)) → activate#(XS)
snd#(pair(X, Y)) → isLNat#(X)isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2)) → activate#(V1)
isLNat#(n__tail(V1)) → activate#(V1)U91#(tt, XS) → activate#(XS)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isNatural(X)) → isNatural#(X)
activate#(n__isLNat(X)) → isLNat#(X)U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))
activate#(n__fst(X)) → activate#(X)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__s(X)) → activate#(X)activate#(n__fst(X)) → fst#(activate(X))
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N) → isNatural#(N)
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))take#(N, XS) → isNatural#(N)
isPLNat#(n__splitAt(V1, V2)) → activate#(V2)isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS)) → isNatural#(N)isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))activate#(n__take(X1, X2)) → activate#(X1)
isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))U11#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))isLNat#(n__snd(V1)) → activate#(V1)
isLNat#(n__snd(V1)) → isPLNat#(activate(V1))snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS)) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → activate#(XS)
U41#(tt, N) → activate#(N)activate#(n__sel(X1, X2)) → activate#(X1)
U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))
activate#(n__snd(X)) → snd#(activate(X))activate#(n__snd(X)) → activate#(X)
sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))activate#(n__cons(X1, X2)) → activate#(X1)
U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))tail#(cons(N, XS)) → isNatural#(N)
isLNat#(n__take(V1, V2)) → activate#(V2)tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
isNatural#(n__sel(V1, V2)) → activate#(V2)activate#(n__tail(X)) → tail#(activate(X))
activate#(n__natsFrom(X)) → activate#(X)snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2)) → activate#(X2)
U81#(tt, N, X, XS) → activate#(X)tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))activate#(n__pair(X1, X2)) → activate#(X1)
U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))U82#(pair(YS, ZS), X) → activate#(X)
activate#(n__and(X1, X2)) → activate#(X1)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__natsFrom(X)) → natsFrom#(activate(X))natsFrom#(N) → U41#(isNatural(N), N)
tail#(cons(N, XS)) → activate#(XS)U21#(tt, X) → activate#(X)
isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))U61#(tt, Y) → activate#(Y)
isNatural#(n__sel(V1, V2)) → activate#(V1)activate#(n__afterNth(X1, X2)) → activate#(X2)
U101#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → activate#(V1)
isLNat#(n__fst(V1)) → activate#(V1)splitAt#(0, XS) → isLNat#(XS)
activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))activate#(n__afterNth(X1, X2)) → activate#(X1)
isLNat#(n__afterNth(V1, V2)) → activate#(V1)activate#(n__take(X1, X2)) → activate#(X2)
U11#(tt, N, XS) → activate#(N)activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1)) → isPLNat#(activate(V1))activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2)) → activate#(V2)U31#(tt, N) → activate#(N)
activate#(n__head(X)) → head#(activate(X))U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))
activate#(n__splitAt(X1, X2)) → activate#(X1)splitAt#(0, XS) → U71#(isLNat(XS), XS)
isLNat#(n__cons(V1, V2)) → activate#(V1)isNatural#(n__head(V1)) → isLNat#(activate(V1))
activate#(n__splitAt(X1, X2)) → activate#(X2)U71#(tt, XS) → activate#(XS)
U101#(tt, N, XS) → activate#(N)U81#(tt, N, X, XS) → activate#(XS)

Problem 3: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U11#(tt, N, XS)splitAt#(activate(N), activate(XS))and#(tt, X)activate#(X)
U81#(tt, N, X, XS)splitAt#(activate(N), activate(XS))sel#(N, XS)isNatural#(N)
isLNat#(n__afterNth(V1, V2))isNatural#(activate(V1))activate#(n__and(X1, X2))and#(activate(X1), X2)
activate#(n__head(X))activate#(X)activate#(n__tail(X))activate#(X)
afterNth#(N, XS)isNatural#(N)U11#(tt, N, XS)snd#(splitAt(activate(N), activate(XS)))
splitAt#(s(N), cons(X, XS))and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))take#(N, XS)and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2))activate#(V2)
isLNat#(n__take(V1, V2))isNatural#(activate(V1))isLNat#(n__take(V1, V2))activate#(V1)
U82#(pair(YS, ZS), X)pair#(cons(activate(X), YS), ZS)isNatural#(n__s(V1))isNatural#(activate(V1))
U51#(tt, N, XS)activate#(N)take#(N, XS)U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
head#(cons(N, XS))activate#(XS)snd#(pair(X, Y))isLNat#(X)
isLNat#(n__take(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))fst#(pair(X, Y))U21#(and(isLNat(X), n__isLNat(Y)), X)
isPLNat#(n__pair(V1, V2))activate#(V1)isLNat#(n__tail(V1))activate#(V1)
U91#(tt, XS)activate#(XS)activate#(n__isNatural(X))isNatural#(X)
U81#(tt, N, X, XS)activate#(N)activate#(n__isLNat(X))isLNat#(X)
U101#(tt, N, XS)splitAt#(activate(N), activate(XS))activate#(n__fst(X))activate#(X)
U82#(pair(YS, ZS), X)cons#(activate(X), YS)activate#(n__sel(X1, X2))activate#(X2)
activate#(n__fst(X))fst#(activate(X))activate#(n__s(X))activate#(X)
isPLNat#(n__splitAt(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS))U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS)activate#(XS)isLNat#(n__natsFrom(V1))activate#(V1)
afterNth#(N, XS)and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1))activate#(V1)
splitAt#(s(N), cons(X, XS))U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N)isNatural#(N)
fst#(pair(X, Y))isLNat#(X)sel#(N, XS)U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1))activate#(V1)isLNat#(n__afterNth(V1, V2))activate#(V2)
isLNat#(n__cons(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))isNatural#(activate(V1))take#(N, XS)isNatural#(N)
isPLNat#(n__splitAt(V1, V2))activate#(V2)head#(cons(N, XS))isNatural#(N)
isLNat#(n__afterNth(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural#(n__sel(V1, V2))isNatural#(activate(V1))
isNatural#(n__sel(V1, V2))and#(isNatural(activate(V1)), n__isLNat(activate(V2)))activate#(n__take(X1, X2))activate#(X1)
isLNat#(n__natsFrom(V1))isNatural#(activate(V1))U11#(tt, N, XS)activate#(XS)
isPLNat#(n__splitAt(V1, V2))isNatural#(activate(V1))isLNat#(n__snd(V1))activate#(V1)
isLNat#(n__snd(V1))isPLNat#(activate(V1))snd#(pair(X, Y))U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS))activate#(XS)splitAt#(s(N), cons(X, XS))isNatural#(N)
U41#(tt, N)activate#(N)activate#(n__sel(X1, X2))activate#(X1)
U101#(tt, N, XS)fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2))take#(activate(X1), activate(X2))
activate#(n__snd(X))snd#(activate(X))activate#(n__snd(X))activate#(X)
activate#(n__cons(X1, X2))activate#(X1)sel#(N, XS)and#(isNatural(N), n__isLNat(XS))
U51#(tt, N, XS)afterNth#(activate(N), activate(XS))tail#(cons(N, XS))isNatural#(N)
isLNat#(n__take(V1, V2))activate#(V2)tail#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))
activate#(n__tail(X))tail#(activate(X))isNatural#(n__sel(V1, V2))activate#(V2)
activate#(n__natsFrom(X))activate#(X)snd#(pair(X, Y))and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS))and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2))activate#(X2)
U81#(tt, N, X, XS)activate#(X)activate#(n__pair(X1, X2))activate#(X1)
isPLNat#(n__pair(V1, V2))and#(isLNat(activate(V1)), n__isLNat(activate(V2)))tail#(cons(N, XS))U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
U82#(pair(YS, ZS), X)activate#(X)U81#(tt, N, X, XS)U82#(splitAt(activate(N), activate(XS)), activate(X))
afterNth#(N, XS)U11#(and(isNatural(N), n__isLNat(XS)), N, XS)activate#(n__and(X1, X2))activate#(X1)
activate#(n__natsFrom(X))natsFrom#(activate(X))natsFrom#(N)U41#(isNatural(N), N)
tail#(cons(N, XS))activate#(XS)U21#(tt, X)activate#(X)
isPLNat#(n__pair(V1, V2))isLNat#(activate(V1))U61#(tt, Y)activate#(Y)
isNatural#(n__sel(V1, V2))activate#(V1)activate#(n__afterNth(X1, X2))activate#(X2)
U101#(tt, N, XS)activate#(XS)isPLNat#(n__splitAt(V1, V2))activate#(V1)
isLNat#(n__fst(V1))activate#(V1)splitAt#(0, XS)isLNat#(XS)
activate#(n__splitAt(X1, X2))splitAt#(activate(X1), activate(X2))activate#(n__afterNth(X1, X2))activate#(X1)
isLNat#(n__afterNth(V1, V2))activate#(V1)activate#(n__take(X1, X2))activate#(X2)
U11#(tt, N, XS)activate#(N)activate#(n__afterNth(X1, X2))afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1))isPLNat#(activate(V1))activate#(n__sel(X1, X2))sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2))activate#(V2)U31#(tt, N)activate#(N)
activate#(n__head(X))head#(activate(X))U51#(tt, N, XS)head#(afterNth(activate(N), activate(XS)))
activate#(n__splitAt(X1, X2))activate#(X1)splitAt#(0, XS)U71#(isLNat(XS), XS)
activate#(n__splitAt(X1, X2))activate#(X2)isNatural#(n__head(V1))isLNat#(activate(V1))
isLNat#(n__cons(V1, V2))activate#(V1)U71#(tt, XS)activate#(XS)
U101#(tt, N, XS)activate#(N)U81#(tt, N, X, XS)activate#(XS)

Rewrite Rules

U101(tt, N, XS)fst(splitAt(activate(N), activate(XS)))U11(tt, N, XS)snd(splitAt(activate(N), activate(XS)))
U21(tt, X)activate(X)U31(tt, N)activate(N)
U41(tt, N)cons(activate(N), n__natsFrom(n__s(activate(N))))U51(tt, N, XS)head(afterNth(activate(N), activate(XS)))
U61(tt, Y)activate(Y)U71(tt, XS)pair(nil, activate(XS))
U81(tt, N, X, XS)U82(splitAt(activate(N), activate(XS)), activate(X))U82(pair(YS, ZS), X)pair(cons(activate(X), YS), ZS)
U91(tt, XS)activate(XS)afterNth(N, XS)U11(and(isNatural(N), n__isLNat(XS)), N, XS)
and(tt, X)activate(X)fst(pair(X, Y))U21(and(isLNat(X), n__isLNat(Y)), X)
head(cons(N, XS))U31(and(isNatural(N), n__isLNat(activate(XS))), N)isLNat(n__nil)tt
isLNat(n__afterNth(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat(n__cons(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))
isLNat(n__fst(V1))isPLNat(activate(V1))isLNat(n__natsFrom(V1))isNatural(activate(V1))
isLNat(n__snd(V1))isPLNat(activate(V1))isLNat(n__tail(V1))isLNat(activate(V1))
isLNat(n__take(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isNatural(n__0)tt
isNatural(n__head(V1))isLNat(activate(V1))isNatural(n__s(V1))isNatural(activate(V1))
isNatural(n__sel(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))isPLNat(n__pair(V1, V2))and(isLNat(activate(V1)), n__isLNat(activate(V2)))
isPLNat(n__splitAt(V1, V2))and(isNatural(activate(V1)), n__isLNat(activate(V2)))natsFrom(N)U41(isNatural(N), N)
sel(N, XS)U51(and(isNatural(N), n__isLNat(XS)), N, XS)snd(pair(X, Y))U61(and(isLNat(X), n__isLNat(Y)), Y)
splitAt(0, XS)U71(isLNat(XS), XS)splitAt(s(N), cons(X, XS))U81(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))
tail(cons(N, XS))U91(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))take(N, XS)U101(and(isNatural(N), n__isLNat(XS)), N, XS)
natsFrom(X)n__natsFrom(X)s(X)n__s(X)
isLNat(X)n__isLNat(X)niln__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)
0n__0head(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)and(X1, X2)n__and(X1, X2)
isNatural(X)n__isNatural(X)activate(n__natsFrom(X))natsFrom(activate(X))
activate(n__s(X))s(activate(X))activate(n__isLNat(X))isLNat(X)
activate(n__nil)nilactivate(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(n__and(X1, X2))and(activate(X1), X2)activate(n__isNatural(X))isNatural(X)
activate(X)X

Original Signature

Termination of terms over the following signature is verified: pair, isNatural, natsFrom, n__snd, n__head, n__sel, n__fst, n__splitAt, fst, activate, n__s, U61, n__0, n__afterNth, n__isLNat, U41, U91, n__isNatural, n__nil, head, U21, cons, snd, n__tail, isPLNat, n__take, n__natsFrom, tail, splitAt, U71, and, n__cons, n__and, 0, U51, s, tt, U82, take, U81, isLNat, U11, n__pair, afterNth, U31, sel, nil, U101

Strategy


The following SCCs where found

U11#(tt, N, XS) → splitAt#(activate(N), activate(XS))and#(tt, X) → activate#(X)
sel#(N, XS) → isNatural#(N)U81#(tt, N, X, XS) → splitAt#(activate(N), activate(XS))
isLNat#(n__afterNth(V1, V2)) → isNatural#(activate(V1))activate#(n__and(X1, X2)) → and#(activate(X1), X2)
activate#(n__head(X)) → activate#(X)activate#(n__tail(X)) → activate#(X)
afterNth#(N, XS) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → and#(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS))))
U11#(tt, N, XS) → snd#(splitAt(activate(N), activate(XS)))take#(N, XS) → and#(isNatural(N), n__isLNat(XS))
fst#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))isLNat#(n__cons(V1, V2)) → activate#(V2)
isLNat#(n__take(V1, V2)) → isNatural#(activate(V1))isLNat#(n__take(V1, V2)) → activate#(V1)
isNatural#(n__s(V1)) → isNatural#(activate(V1))take#(N, XS) → U101#(and(isNatural(N), n__isLNat(XS)), N, XS)
U51#(tt, N, XS) → activate#(N)head#(cons(N, XS)) → activate#(XS)
snd#(pair(X, Y)) → isLNat#(X)isLNat#(n__take(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
fst#(pair(X, Y)) → U21#(and(isLNat(X), n__isLNat(Y)), X)isPLNat#(n__pair(V1, V2)) → activate#(V1)
isLNat#(n__tail(V1)) → activate#(V1)U91#(tt, XS) → activate#(XS)
U81#(tt, N, X, XS) → activate#(N)activate#(n__isNatural(X)) → isNatural#(X)
activate#(n__isLNat(X)) → isLNat#(X)U101#(tt, N, XS) → splitAt#(activate(N), activate(XS))
activate#(n__fst(X)) → activate#(X)activate#(n__sel(X1, X2)) → activate#(X2)
activate#(n__s(X)) → activate#(X)activate#(n__fst(X)) → fst#(activate(X))
isPLNat#(n__splitAt(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))head#(cons(N, XS)) → U31#(and(isNatural(N), n__isLNat(activate(XS))), N)
U51#(tt, N, XS) → activate#(XS)isLNat#(n__natsFrom(V1)) → activate#(V1)
afterNth#(N, XS) → and#(isNatural(N), n__isLNat(XS))isNatural#(n__head(V1)) → activate#(V1)
splitAt#(s(N), cons(X, XS)) → U81#(and(isNatural(N), n__and(n__isNatural(X), n__isLNat(activate(XS)))), N, X, activate(XS))natsFrom#(N) → isNatural#(N)
fst#(pair(X, Y)) → isLNat#(X)sel#(N, XS) → U51#(and(isNatural(N), n__isLNat(XS)), N, XS)
isNatural#(n__s(V1)) → activate#(V1)isLNat#(n__afterNth(V1, V2)) → activate#(V2)
isLNat#(n__cons(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))isLNat#(n__tail(V1)) → isLNat#(activate(V1))
isLNat#(n__cons(V1, V2)) → isNatural#(activate(V1))take#(N, XS) → isNatural#(N)
isPLNat#(n__splitAt(V1, V2)) → activate#(V2)isLNat#(n__afterNth(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
head#(cons(N, XS)) → isNatural#(N)isNatural#(n__sel(V1, V2)) → and#(isNatural(activate(V1)), n__isLNat(activate(V2)))
isNatural#(n__sel(V1, V2)) → isNatural#(activate(V1))activate#(n__take(X1, X2)) → activate#(X1)
isLNat#(n__natsFrom(V1)) → isNatural#(activate(V1))U11#(tt, N, XS) → activate#(XS)
isPLNat#(n__splitAt(V1, V2)) → isNatural#(activate(V1))isLNat#(n__snd(V1)) → activate#(V1)
isLNat#(n__snd(V1)) → isPLNat#(activate(V1))snd#(pair(X, Y)) → U61#(and(isLNat(X), n__isLNat(Y)), Y)
splitAt#(s(N), cons(X, XS)) → isNatural#(N)splitAt#(s(N), cons(X, XS)) → activate#(XS)
U41#(tt, N) → activate#(N)activate#(n__sel(X1, X2)) → activate#(X1)
U101#(tt, N, XS) → fst#(splitAt(activate(N), activate(XS)))activate#(n__take(X1, X2)) → take#(activate(X1), activate(X2))
activate#(n__snd(X)) → snd#(activate(X))activate#(n__snd(X)) → activate#(X)
sel#(N, XS) → and#(isNatural(N), n__isLNat(XS))activate#(n__cons(X1, X2)) → activate#(X1)
U51#(tt, N, XS) → afterNth#(activate(N), activate(XS))tail#(cons(N, XS)) → isNatural#(N)
isLNat#(n__take(V1, V2)) → activate#(V2)tail#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))
isNatural#(n__sel(V1, V2)) → activate#(V2)activate#(n__tail(X)) → tail#(activate(X))
activate#(n__natsFrom(X)) → activate#(X)snd#(pair(X, Y)) → and#(isLNat(X), n__isLNat(Y))
head#(cons(N, XS)) → and#(isNatural(N), n__isLNat(activate(XS)))activate#(n__pair(X1, X2)) → activate#(X2)
U81#(tt, N, X, XS) → activate#(X)tail#(cons(N, XS)) → U91#(and(isNatural(N), n__isLNat(activate(XS))), activate(XS))
isPLNat#(n__pair(V1, V2)) → and#(isLNat(activate(V1)), n__isLNat(activate(V2)))activate#(n__pair(X1, X2)) → activate#(X1)
U81#(tt, N, X, XS) → U82#(splitAt(activate(N), activate(XS)), activate(X))U82#(pair(YS, ZS), X) → activate#(X)
activate#(n__and(X1, X2)) → activate#(X1)afterNth#(N, XS) → U11#(and(isNatural(N), n__isLNat(XS)), N, XS)
activate#(n__natsFrom(X)) → natsFrom#(activate(X))natsFrom#(N) → U41#(isNatural(N), N)
tail#(cons(N, XS)) → activate#(XS)U21#(tt, X) → activate#(X)
isPLNat#(n__pair(V1, V2)) → isLNat#(activate(V1))U61#(tt, Y) → activate#(Y)
isNatural#(n__sel(V1, V2)) → activate#(V1)activate#(n__afterNth(X1, X2)) → activate#(X2)
U101#(tt, N, XS) → activate#(XS)isPLNat#(n__splitAt(V1, V2)) → activate#(V1)
isLNat#(n__fst(V1)) → activate#(V1)splitAt#(0, XS) → isLNat#(XS)
activate#(n__splitAt(X1, X2)) → splitAt#(activate(X1), activate(X2))activate#(n__afterNth(X1, X2)) → activate#(X1)
isLNat#(n__afterNth(V1, V2)) → activate#(V1)activate#(n__take(X1, X2)) → activate#(X2)
U11#(tt, N, XS) → activate#(N)activate#(n__afterNth(X1, X2)) → afterNth#(activate(X1), activate(X2))
isLNat#(n__fst(V1)) → isPLNat#(activate(V1))activate#(n__sel(X1, X2)) → sel#(activate(X1), activate(X2))
isPLNat#(n__pair(V1, V2)) → activate#(V2)U31#(tt, N) → activate#(N)
activate#(n__head(X)) → head#(activate(X))U51#(tt, N, XS) → head#(afterNth(activate(N), activate(XS)))
activate#(n__splitAt(X1, X2)) → activate#(X1)splitAt#(0, XS) → U71#(isLNat(XS), XS)
isLNat#(n__cons(V1, V2)) → activate#(V1)isNatural#(n__head(V1)) → isLNat#(activate(V1))
activate#(n__splitAt(X1, X2)) → activate#(X2)U71#(tt, XS) → activate#(XS)
U101#(tt, N, XS) → activate#(N)U81#(tt, N, X, XS) → activate#(XS)