TIMEOUT

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

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (5882ms).
 | – Problem 2 was processed with processor DependencyGraph (14ms).
 | – Problem 3 was processed with processor DependencyGraph (30ms).
 | – Problem 4 was processed with processor DependencyGraph (10ms).
 | – Problem 5 was processed with processor DependencyGraph (4ms).
 | – Problem 6 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (1ms), SubtermCriterion (0ms), DependencyGraph (1ms), PolynomialLinearRange4iUR (1ms), DependencyGraph (1ms), PolynomialOrderingProcessor (0ms), DependencyGraph (1ms), PolynomialLinearRange4 (1124ms), DependencyGraph (2ms), ReductionPairSAT (3495ms), DependencyGraph (1ms), SizeChangePrinciple (timeout)].
 | – Problem 7 was processed with processor DependencyGraph (12ms).
 | – Problem 8 was processed with processor DependencyGraph (1ms).
 | – Problem 9 was processed with processor DependencyGraph (12ms).
 | – Problem 10 remains open; application of the following processors failed [SubtermCriterion (0ms), DependencyGraph (1470ms), SubtermCriterion (0ms), DependencyGraph (1453ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (1458ms), PolynomialOrderingProcessor (0ms), DependencyGraph (1455ms), PolynomialLinearRange4 (2618ms), DependencyGraph (1467ms), ReductionPairSAT (6410ms), DependencyGraph (1456ms)].
 | – Problem 11 was processed with processor DependencyGraph (1ms).

The following open problems remain:



Open Dependency Pair Problem 6

Dependency Pairs

splitAt#(s(N), cons(X, XS))U201#(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)U201#(tt, N, X, XS)splitAt#(N, XS)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isLNatKind, U152, isPLNat, tail, and, U71, U191, U72, 0, isPLNatKind, U122, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, s, U51, tt, take, U82, U53, U81, U52, U11, afterNth, U102, sel, U103, U101, nil




Open Dependency Pair Problem 10

Dependency Pairs

isNaturalKind#(sel(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))T(isNaturalKind(X))isNaturalKind#(X)
T(and(x_1, x_2))T(x_1)isPLNat#(splitAt(V1, V2))isNaturalKind#(V1)
T(isNatural(X))isNatural#(X)U131#(tt, V1, V2)isNatural#(V1)
isLNat#(snd(V1))isPLNatKind#(V1)isLNat#(take(V1, V2))U101#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
U71#(tt, V1)isNatural#(V1)U141#(tt, V1, V2)isLNat#(V1)
U52#(tt, V2)isLNat#(V2)U142#(tt, V2)isLNat#(V2)
isNaturalKind#(sel(V1, V2))isNaturalKind#(V1)and#(tt, X)T(X)
T(isLNatKind(Y))isLNatKind#(Y)U101#(tt, V1, V2)U102#(isNatural(V1), V2)
isLNat#(afterNth(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isPLNat#(pair(V1, V2))and#(isLNatKind(V1), isLNatKind(V2))
U111#(tt, V1)isLNat#(V1)U51#(tt, V1, V2)isNatural#(V1)
U121#(tt, V1)isNatural#(V1)isPLNatKind#(pair(V1, V2))isLNatKind#(V1)
T(isNaturalKind(N))isNaturalKind#(N)isLNat#(natsFrom(V1))U71#(isNaturalKind(V1), V1)
U61#(tt, V1)isPLNat#(V1)T(isNatural(x_1))T(x_1)
isLNat#(cons(V1, V2))isNaturalKind#(V1)isLNatKind#(cons(V1, V2))isNaturalKind#(V1)
T(and(x_1, x_2))T(x_2)T(isLNatKind(XS))isLNatKind#(XS)
isPLNat#(pair(V1, V2))isLNatKind#(V1)isNatural#(s(V1))U121#(isNaturalKind(V1), V1)
isLNat#(tail(V1))isLNatKind#(V1)U152#(tt, V2)isLNat#(V2)
isLNat#(cons(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))U161#(tt, N)T(N)
U151#(tt, V1, V2)isNatural#(V1)isPLNatKind#(splitAt(V1, V2))isNaturalKind#(V1)
U51#(tt, V1, V2)U52#(isNatural(V1), V2)isNatural#(head(V1))isLNatKind#(V1)
T(natsFrom(x_1))T(x_1)isPLNat#(splitAt(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
isNaturalKind#(s(V1))isNaturalKind#(V1)U81#(tt, V1)isPLNat#(V1)
U41#(tt, V1, V2)isNatural#(V1)isLNatKind#(take(V1, V2))isNaturalKind#(V1)
isLNat#(snd(V1))U81#(isPLNatKind(V1), V1)isPLNat#(pair(V1, V2))U141#(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
T(and(isLNat(Y), isLNatKind(Y)))and#(isLNat(Y), isLNatKind(Y))U102#(tt, V2)isLNat#(V2)
isLNatKind#(cons(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isLNat#(take(V1, V2))isNaturalKind#(V1)
T(isLNat(XS))isLNat#(XS)U141#(tt, V1, V2)U142#(isLNat(V1), V2)
isLNatKind#(take(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isPLNatKind#(pair(V1, V2))and#(isLNatKind(V1), isLNatKind(V2))
T(and(isNatural(X), isNaturalKind(X)))and#(isNatural(X), isNaturalKind(X))isLNat#(natsFrom(V1))isNaturalKind#(V1)
T(and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS))))and#(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))T(s(x_1))T(x_1)
isNatural#(sel(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(sel(V1, V2))U131#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
T(isLNatKind(V2))isLNatKind#(V2)isLNat#(afterNth(V1, V2))isNaturalKind#(V1)
natsFrom#(N)isNatural#(N)isLNatKind#(snd(V1))isPLNatKind#(V1)
T(natsFrom(s(N)))natsFrom#(s(N))isLNatKind#(fst(V1))isPLNatKind#(V1)
isLNatKind#(afterNth(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(head(V1))U111#(isLNatKind(V1), V1)
U41#(tt, V1, V2)U42#(isNatural(V1), V2)T(and(isLNat(XS), isLNatKind(XS)))and#(isLNat(XS), isLNatKind(XS))
natsFrom#(N)U161#(and(isNatural(N), isNaturalKind(N)), N)isNaturalKind#(head(V1))isLNatKind#(V1)
U91#(tt, V1)isLNat#(V1)isLNat#(tail(V1))U91#(isLNatKind(V1), V1)
T(isLNatKind(X))isLNatKind#(X)T(isLNat(Y))isLNat#(Y)
isLNat#(take(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))U151#(tt, V1, V2)U152#(isNatural(V1), V2)
isPLNatKind#(splitAt(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(sel(V1, V2))isNaturalKind#(V1)
isNatural#(s(V1))isNaturalKind#(V1)isLNat#(fst(V1))U61#(isPLNatKind(V1), V1)
U132#(tt, V2)isLNat#(V2)isLNatKind#(natsFrom(V1))isNaturalKind#(V1)
isLNat#(afterNth(V1, V2))U41#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)T(isLNat(x_1))T(x_1)
isLNatKind#(tail(V1))isLNatKind#(V1)U131#(tt, V1, V2)U132#(isNatural(V1), V2)
T(isLNatKind(x_1))T(x_1)isLNatKind#(afterNth(V1, V2))isNaturalKind#(V1)
isLNat#(cons(V1, V2))U51#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat#(fst(V1))isPLNatKind#(V1)
T(isNaturalKind(x_1))T(x_1)isPLNat#(splitAt(V1, V2))U151#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
U101#(tt, V1, V2)isNatural#(V1)natsFrom#(N)and#(isNatural(N), isNaturalKind(N))
U42#(tt, V2)isLNat#(V2)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isLNatKind, U152, isPLNat, tail, and, U71, U191, U72, 0, isPLNatKind, U122, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, s, U51, tt, take, U82, U53, U81, U52, U11, afterNth, U102, sel, U103, U101, nil


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

snd#(pair(X, Y))U181#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)splitAt#(s(N), cons(X, XS))isNatural#(N)
U81#(tt, V1)U82#(isPLNat(V1))isNaturalKind#(sel(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
T(isNaturalKind(X))isNaturalKind#(X)snd#(pair(X, Y))and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS)splitAt#(N, XS)T(and(x_1, x_2))T(x_1)
tail#(cons(N, XS))isNatural#(N)isPLNat#(splitAt(V1, V2))isNaturalKind#(V1)
T(isNatural(X))isNatural#(X)U11#(tt, N, XS)T(N)
U131#(tt, V1, V2)isNatural#(V1)isLNat#(snd(V1))isPLNatKind#(V1)
U181#(tt, Y)T(Y)head#(cons(N, XS))isNatural#(N)
isLNat#(take(V1, V2))U101#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)U71#(tt, V1)isNatural#(V1)
U111#(tt, V1)U112#(isLNat(V1))U141#(tt, V1, V2)isLNat#(V1)
head#(cons(N, XS))and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))U142#(tt, V2)isLNat#(V2)
U52#(tt, V2)isLNat#(V2)isNaturalKind#(sel(V1, V2))isNaturalKind#(V1)
afterNth#(N, XS)and#(isNatural(N), isNaturalKind(N))and#(tt, X)T(X)
U101#(tt, V1, V2)U102#(isNatural(V1), V2)T(isLNatKind(Y))isLNatKind#(Y)
isLNat#(afterNth(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isPLNat#(pair(V1, V2))and#(isLNatKind(V1), isLNatKind(V2))
U111#(tt, V1)isLNat#(V1)splitAt#(0, XS)and#(isLNat(XS), isLNatKind(XS))
take#(N, XS)and#(isNatural(N), isNaturalKind(N))U201#(tt, N, X, XS)T(XS)
U61#(tt, V1)U62#(isPLNat(V1))U51#(tt, V1, V2)isNatural#(V1)
U121#(tt, V1)isNatural#(V1)isPLNatKind#(pair(V1, V2))isLNatKind#(V1)
T(isNaturalKind(N))isNaturalKind#(N)isLNat#(natsFrom(V1))U71#(isNaturalKind(V1), V1)
U91#(tt, V1)U92#(isLNat(V1))U61#(tt, V1)isPLNat#(V1)
sel#(N, XS)and#(isNatural(N), isNaturalKind(N))T(isNatural(x_1))T(x_1)
U132#(tt, V2)U133#(isLNat(V2))isLNat#(cons(V1, V2))isNaturalKind#(V1)
U71#(tt, V1)U72#(isNatural(V1))isLNatKind#(cons(V1, V2))isNaturalKind#(V1)
T(and(x_1, x_2))T(x_2)T(isLNatKind(XS))isLNatKind#(XS)
U221#(tt, N, XS)T(N)U52#(tt, V2)U53#(isLNat(V2))
head#(cons(N, XS))and#(isNatural(N), isNaturalKind(N))isPLNat#(pair(V1, V2))isLNatKind#(V1)
isNatural#(s(V1))U121#(isNaturalKind(V1), V1)afterNth#(N, XS)and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))
splitAt#(s(N), cons(X, XS))U201#(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)U221#(tt, N, XS)splitAt#(N, XS)
isLNat#(tail(V1))isLNatKind#(V1)U102#(tt, V2)U103#(isLNat(V2))
U221#(tt, N, XS)fst#(splitAt(N, XS))U152#(tt, V2)isLNat#(V2)
isLNat#(cons(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))U151#(tt, V1, V2)isNatural#(V1)
U161#(tt, N)T(N)isPLNatKind#(splitAt(V1, V2))isNaturalKind#(V1)
isNatural#(head(V1))isLNatKind#(V1)U51#(tt, V1, V2)U52#(isNatural(V1), V2)
U121#(tt, V1)U122#(isNatural(V1))T(natsFrom(x_1))T(x_1)
isPLNat#(splitAt(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))U31#(tt, N)T(N)
isNaturalKind#(s(V1))isNaturalKind#(V1)splitAt#(s(N), cons(X, XS))and#(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS))))
U81#(tt, V1)isPLNat#(V1)U41#(tt, V1, V2)isNatural#(V1)
U21#(tt, X)T(X)fst#(pair(X, Y))and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS)snd#(splitAt(N, XS))take#(N, XS)U221#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
U142#(tt, V2)U143#(isLNat(V2))isLNatKind#(take(V1, V2))isNaturalKind#(V1)
splitAt#(0, XS)U191#(and(isLNat(XS), isLNatKind(XS)), XS)isLNat#(snd(V1))U81#(isPLNatKind(V1), V1)
isPLNat#(pair(V1, V2))U141#(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)U152#(tt, V2)U153#(isLNat(V2))
U171#(tt, N, XS)head#(afterNth(N, XS))T(and(isLNat(Y), isLNatKind(Y)))and#(isLNat(Y), isLNatKind(Y))
U102#(tt, V2)isLNat#(V2)U211#(tt, XS)T(XS)
U191#(tt, XS)T(XS)isLNatKind#(cons(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
T(isLNat(XS))isLNat#(XS)U141#(tt, V1, V2)U142#(isLNat(V1), V2)
isLNat#(take(V1, V2))isNaturalKind#(V1)isPLNatKind#(pair(V1, V2))and#(isLNatKind(V1), isLNatKind(V2))
isLNatKind#(take(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))fst#(pair(X, Y))and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))
T(and(isNatural(X), isNaturalKind(X)))and#(isNatural(X), isNaturalKind(X))isLNat#(natsFrom(V1))isNaturalKind#(V1)
T(and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS))))and#(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))U171#(tt, N, XS)afterNth#(N, XS)
T(s(x_1))T(x_1)isNatural#(sel(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
isNatural#(sel(V1, V2))U131#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)T(isLNatKind(V2))isLNatKind#(V2)
isLNat#(afterNth(V1, V2))isNaturalKind#(V1)snd#(pair(X, Y))isLNat#(X)
splitAt#(0, XS)isLNat#(XS)tail#(cons(N, XS))and#(isNatural(N), isNaturalKind(N))
natsFrom#(N)isNatural#(N)isLNatKind#(snd(V1))isPLNatKind#(V1)
T(natsFrom(s(N)))natsFrom#(s(N))U201#(tt, N, X, XS)U202#(splitAt(N, XS), X)
isLNatKind#(fst(V1))isPLNatKind#(V1)isLNatKind#(afterNth(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
head#(cons(N, XS))U31#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isNatural#(head(V1))U111#(isLNatKind(V1), V1)
U41#(tt, V1, V2)U42#(isNatural(V1), V2)fst#(pair(X, Y))isLNat#(X)
T(and(isLNat(XS), isLNatKind(XS)))and#(isLNat(XS), isLNatKind(XS))sel#(N, XS)isNatural#(N)
splitAt#(s(N), cons(X, XS))and#(isNatural(N), isNaturalKind(N))tail#(cons(N, XS))U211#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)
natsFrom#(N)U161#(and(isNatural(N), isNaturalKind(N)), N)take#(N, XS)isNatural#(N)
isNaturalKind#(head(V1))isLNatKind#(V1)U201#(tt, N, X, XS)splitAt#(N, XS)
U91#(tt, V1)isLNat#(V1)isLNat#(tail(V1))U91#(isLNatKind(V1), V1)
snd#(pair(X, Y))and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))U221#(tt, N, XS)T(XS)
T(isLNatKind(X))isLNatKind#(X)isLNat#(take(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))
U151#(tt, V1, V2)U152#(isNatural(V1), V2)T(isLNat(Y))isLNat#(Y)
fst#(pair(X, Y))U21#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)isNatural#(sel(V1, V2))isNaturalKind#(V1)
isPLNatKind#(splitAt(V1, V2))and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(s(V1))isNaturalKind#(V1)
isLNat#(fst(V1))U61#(isPLNatKind(V1), V1)U132#(tt, V2)isLNat#(V2)
tail#(cons(N, XS))and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))isLNatKind#(natsFrom(V1))isNaturalKind#(V1)
U11#(tt, N, XS)T(XS)isLNat#(afterNth(V1, V2))U41#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
afterNth#(N, XS)U11#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)U171#(tt, N, XS)T(N)
afterNth#(N, XS)isNatural#(N)U202#(pair(YS, ZS), X)T(X)
T(isLNat(x_1))T(x_1)U42#(tt, V2)U43#(isLNat(V2))
isLNatKind#(tail(V1))isLNatKind#(V1)take#(N, XS)and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))
U131#(tt, V1, V2)U132#(isNatural(V1), V2)T(isLNatKind(x_1))T(x_1)
sel#(N, XS)U171#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)sel#(N, XS)and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))
isLNatKind#(afterNth(V1, V2))isNaturalKind#(V1)U171#(tt, N, XS)T(XS)
isLNat#(cons(V1, V2))U51#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat#(fst(V1))isPLNatKind#(V1)
T(isNaturalKind(x_1))T(x_1)isPLNat#(splitAt(V1, V2))U151#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
U101#(tt, V1, V2)isNatural#(V1)U201#(tt, N, X, XS)T(N)
natsFrom#(N)and#(isNatural(N), isNaturalKind(N))U42#(tt, V2)isLNat#(V2)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(U31#) = μ(fst#) = μ(U181#) = μ(tail#) = μ(U52#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U71#) = μ(U122) = μ(U121) = μ(U102#) = μ(and#) = μ(U122#) = μ(U201#) = μ(U221#) = μ(U43#) = μ(U132) = μ(U131) = μ(U43) = μ(U42) = μ(U133) = μ(U41) = μ(U142#) = μ(cons) = μ(U101#) = μ(U121#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U11) = μ(U112#) = μ(U131#) = μ(head#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


The following SCCs where found

snd#(pair(X, Y)) → and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))snd#(pair(X, Y)) → U181#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
U181#(tt, Y) → T(Y)snd#(pair(X, Y)) → and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS) → snd#(splitAt(N, XS))

U31#(tt, N) → T(N)head#(cons(N, XS)) → U31#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)
head#(cons(N, XS)) → isNatural#(N)U171#(tt, N, XS) → head#(afterNth(N, XS))
head#(cons(N, XS)) → and#(isNatural(N), isNaturalKind(N))head#(cons(N, XS)) → and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))
sel#(N, XS) → U171#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)U171#(tt, N, XS) → T(XS)
U171#(tt, N, XS) → T(N)

afterNth#(N, XS) → and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))U171#(tt, N, XS) → afterNth#(N, XS)
afterNth#(N, XS) → isNatural#(N)

U201#(tt, N, X, XS) → U202#(splitAt(N, XS), X)U202#(pair(YS, ZS), X) → T(X)

U11#(tt, N, XS) → T(N)U11#(tt, N, XS) → T(XS)
afterNth#(N, XS) → U11#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

splitAt#(s(N), cons(X, XS)) → U201#(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)U201#(tt, N, X, XS) → splitAt#(N, XS)

fst#(pair(X, Y)) → isLNat#(X)fst#(pair(X, Y)) → U21#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
U221#(tt, N, XS) → fst#(splitAt(N, XS))U21#(tt, X) → T(X)
fst#(pair(X, Y)) → and#(isLNat(X), isLNatKind(X))fst#(pair(X, Y)) → and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))

isNaturalKind#(sel(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))T(isNaturalKind(X)) → isNaturalKind#(X)
T(and(x_1, x_2)) → T(x_1)isPLNat#(splitAt(V1, V2)) → isNaturalKind#(V1)
T(isNatural(X)) → isNatural#(X)isLNat#(snd(V1)) → isPLNatKind#(V1)
U131#(tt, V1, V2) → isNatural#(V1)isLNat#(take(V1, V2)) → U101#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
U71#(tt, V1) → isNatural#(V1)U141#(tt, V1, V2) → isLNat#(V1)
U142#(tt, V2) → isLNat#(V2)U52#(tt, V2) → isLNat#(V2)
isNaturalKind#(sel(V1, V2)) → isNaturalKind#(V1)U101#(tt, V1, V2) → U102#(isNatural(V1), V2)
T(isLNatKind(Y)) → isLNatKind#(Y)and#(tt, X) → T(X)
isLNat#(afterNth(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))isPLNat#(pair(V1, V2)) → and#(isLNatKind(V1), isLNatKind(V2))
U111#(tt, V1) → isLNat#(V1)U51#(tt, V1, V2) → isNatural#(V1)
U121#(tt, V1) → isNatural#(V1)T(isNaturalKind(N)) → isNaturalKind#(N)
isPLNatKind#(pair(V1, V2)) → isLNatKind#(V1)isLNat#(natsFrom(V1)) → U71#(isNaturalKind(V1), V1)
U61#(tt, V1) → isPLNat#(V1)T(isNatural(x_1)) → T(x_1)
isLNat#(cons(V1, V2)) → isNaturalKind#(V1)T(and(x_1, x_2)) → T(x_2)
isLNatKind#(cons(V1, V2)) → isNaturalKind#(V1)T(isLNatKind(XS)) → isLNatKind#(XS)
isPLNat#(pair(V1, V2)) → isLNatKind#(V1)isNatural#(s(V1)) → U121#(isNaturalKind(V1), V1)
isLNat#(tail(V1)) → isLNatKind#(V1)U152#(tt, V2) → isLNat#(V2)
isLNat#(cons(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))U151#(tt, V1, V2) → isNatural#(V1)
U161#(tt, N) → T(N)isPLNatKind#(splitAt(V1, V2)) → isNaturalKind#(V1)
isNatural#(head(V1)) → isLNatKind#(V1)U51#(tt, V1, V2) → U52#(isNatural(V1), V2)
isPLNat#(splitAt(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))T(natsFrom(x_1)) → T(x_1)
isNaturalKind#(s(V1)) → isNaturalKind#(V1)U81#(tt, V1) → isPLNat#(V1)
U41#(tt, V1, V2) → isNatural#(V1)isLNatKind#(take(V1, V2)) → isNaturalKind#(V1)
isLNat#(snd(V1)) → U81#(isPLNatKind(V1), V1)isPLNat#(pair(V1, V2)) → U141#(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
T(and(isLNat(Y), isLNatKind(Y))) → and#(isLNat(Y), isLNatKind(Y))U102#(tt, V2) → isLNat#(V2)
isLNatKind#(cons(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))U141#(tt, V1, V2) → U142#(isLNat(V1), V2)
T(isLNat(XS)) → isLNat#(XS)isLNat#(take(V1, V2)) → isNaturalKind#(V1)
isPLNatKind#(pair(V1, V2)) → and#(isLNatKind(V1), isLNatKind(V2))isLNatKind#(take(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))
T(and(isNatural(X), isNaturalKind(X))) → and#(isNatural(X), isNaturalKind(X))isLNat#(natsFrom(V1)) → isNaturalKind#(V1)
T(and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))) → and#(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))T(s(x_1)) → T(x_1)
isNatural#(sel(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(sel(V1, V2)) → U131#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
T(isLNatKind(V2)) → isLNatKind#(V2)isLNat#(afterNth(V1, V2)) → isNaturalKind#(V1)
natsFrom#(N) → isNatural#(N)isLNatKind#(snd(V1)) → isPLNatKind#(V1)
T(natsFrom(s(N))) → natsFrom#(s(N))isLNatKind#(fst(V1)) → isPLNatKind#(V1)
isLNatKind#(afterNth(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))isNatural#(head(V1)) → U111#(isLNatKind(V1), V1)
U41#(tt, V1, V2) → U42#(isNatural(V1), V2)T(and(isLNat(XS), isLNatKind(XS))) → and#(isLNat(XS), isLNatKind(XS))
natsFrom#(N) → U161#(and(isNatural(N), isNaturalKind(N)), N)isNaturalKind#(head(V1)) → isLNatKind#(V1)
U91#(tt, V1) → isLNat#(V1)isLNat#(tail(V1)) → U91#(isLNatKind(V1), V1)
T(isLNatKind(X)) → isLNatKind#(X)U151#(tt, V1, V2) → U152#(isNatural(V1), V2)
isLNat#(take(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))T(isLNat(Y)) → isLNat#(Y)
isNatural#(sel(V1, V2)) → isNaturalKind#(V1)isPLNatKind#(splitAt(V1, V2)) → and#(isNaturalKind(V1), isLNatKind(V2))
isNatural#(s(V1)) → isNaturalKind#(V1)isLNat#(fst(V1)) → U61#(isPLNatKind(V1), V1)
U132#(tt, V2) → isLNat#(V2)isLNatKind#(natsFrom(V1)) → isNaturalKind#(V1)
isLNat#(afterNth(V1, V2)) → U41#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)T(isLNat(x_1)) → T(x_1)
isLNatKind#(tail(V1)) → isLNatKind#(V1)U131#(tt, V1, V2) → U132#(isNatural(V1), V2)
T(isLNatKind(x_1)) → T(x_1)isLNatKind#(afterNth(V1, V2)) → isNaturalKind#(V1)
isLNat#(cons(V1, V2)) → U51#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat#(fst(V1)) → isPLNatKind#(V1)
T(isNaturalKind(x_1)) → T(x_1)isPLNat#(splitAt(V1, V2)) → U151#(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
U101#(tt, V1, V2) → isNatural#(V1)natsFrom#(N) → and#(isNatural(N), isNaturalKind(N))
U42#(tt, V2) → isLNat#(V2)

snd#(pair(X, Y)) → isLNat#(X)snd#(pair(X, Y)) → and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))
U11#(tt, N, XS) → T(N)snd#(pair(X, Y)) → U181#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
U181#(tt, Y) → T(Y)snd#(pair(X, Y)) → and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS) → T(XS)afterNth#(N, XS) → U11#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
U11#(tt, N, XS) → snd#(splitAt(N, XS))

take#(N, XS) → U221#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)U221#(tt, N, XS) → T(XS)

Problem 2: DependencyGraph



Dependency Pair Problem

Dependency Pairs

take#(N, XS)U221#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)U221#(tt, N, XS)T(XS)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 3: DependencyGraph



Dependency Pair Problem

Dependency Pairs

fst#(pair(X, Y))isLNat#(X)fst#(pair(X, Y))U21#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
U221#(tt, N, XS)fst#(splitAt(N, XS))U21#(tt, X)T(X)
fst#(pair(X, Y))and#(isLNat(X), isLNatKind(X))fst#(pair(X, Y))and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 4: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U31#(tt, N)T(N)head#(cons(N, XS))U31#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)
head#(cons(N, XS))isNatural#(N)U171#(tt, N, XS)head#(afterNth(N, XS))
head#(cons(N, XS))and#(isNatural(N), isNaturalKind(N))head#(cons(N, XS))and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))
sel#(N, XS)U171#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)U171#(tt, N, XS)T(XS)
U171#(tt, N, XS)T(N)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 5: DependencyGraph



Dependency Pair Problem

Dependency Pairs

snd#(pair(X, Y))and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))snd#(pair(X, Y))U181#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
U181#(tt, Y)T(Y)snd#(pair(X, Y))and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS)snd#(splitAt(N, XS))

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 7: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U201#(tt, N, X, XS)U202#(splitAt(N, XS), X)U202#(pair(YS, ZS), X)T(X)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 8: DependencyGraph



Dependency Pair Problem

Dependency Pairs

afterNth#(N, XS)and#(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS)))U171#(tt, N, XS)afterNth#(N, XS)
afterNth#(N, XS)isNatural#(N)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 9: DependencyGraph



Dependency Pair Problem

Dependency Pairs

snd#(pair(X, Y))isLNat#(X)snd#(pair(X, Y))and#(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y)))
U11#(tt, N, XS)T(N)snd#(pair(X, Y))U181#(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
U181#(tt, Y)T(Y)snd#(pair(X, Y))and#(isLNat(X), isLNatKind(X))
U11#(tt, N, XS)T(XS)afterNth#(N, XS)U11#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
U11#(tt, N, XS)snd#(splitAt(N, XS))

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!

Problem 11: DependencyGraph



Dependency Pair Problem

Dependency Pairs

U11#(tt, N, XS)T(N)U11#(tt, N, XS)T(XS)
afterNth#(N, XS)U11#(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Rewrite Rules

U101(tt, V1, V2)U102(isNatural(V1), V2)U102(tt, V2)U103(isLNat(V2))
U103(tt)ttU11(tt, N, XS)snd(splitAt(N, XS))
U111(tt, V1)U112(isLNat(V1))U112(tt)tt
U121(tt, V1)U122(isNatural(V1))U122(tt)tt
U131(tt, V1, V2)U132(isNatural(V1), V2)U132(tt, V2)U133(isLNat(V2))
U133(tt)ttU141(tt, V1, V2)U142(isLNat(V1), V2)
U142(tt, V2)U143(isLNat(V2))U143(tt)tt
U151(tt, V1, V2)U152(isNatural(V1), V2)U152(tt, V2)U153(isLNat(V2))
U153(tt)ttU161(tt, N)cons(N, natsFrom(s(N)))
U171(tt, N, XS)head(afterNth(N, XS))U181(tt, Y)Y
U191(tt, XS)pair(nil, XS)U201(tt, N, X, XS)U202(splitAt(N, XS), X)
U202(pair(YS, ZS), X)pair(cons(X, YS), ZS)U21(tt, X)X
U211(tt, XS)XSU221(tt, N, XS)fst(splitAt(N, XS))
U31(tt, N)NU41(tt, V1, V2)U42(isNatural(V1), V2)
U42(tt, V2)U43(isLNat(V2))U43(tt)tt
U51(tt, V1, V2)U52(isNatural(V1), V2)U52(tt, V2)U53(isLNat(V2))
U53(tt)ttU61(tt, V1)U62(isPLNat(V1))
U62(tt)ttU71(tt, V1)U72(isNatural(V1))
U72(tt)ttU81(tt, V1)U82(isPLNat(V1))
U82(tt)ttU91(tt, V1)U92(isLNat(V1))
U92(tt)ttafterNth(N, XS)U11(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)
and(tt, X)Xfst(pair(X, Y))U21(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), X)
head(cons(N, XS))U31(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N)isLNat(nil)tt
isLNat(afterNth(V1, V2))U41(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNat(cons(V1, V2))U51(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)
isLNat(fst(V1))U61(isPLNatKind(V1), V1)isLNat(natsFrom(V1))U71(isNaturalKind(V1), V1)
isLNat(snd(V1))U81(isPLNatKind(V1), V1)isLNat(tail(V1))U91(isLNatKind(V1), V1)
isLNat(take(V1, V2))U101(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isLNatKind(nil)tt
isLNatKind(afterNth(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isLNatKind(cons(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))
isLNatKind(fst(V1))isPLNatKind(V1)isLNatKind(natsFrom(V1))isNaturalKind(V1)
isLNatKind(snd(V1))isPLNatKind(V1)isLNatKind(tail(V1))isLNatKind(V1)
isLNatKind(take(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isNatural(0)tt
isNatural(head(V1))U111(isLNatKind(V1), V1)isNatural(s(V1))U121(isNaturalKind(V1), V1)
isNatural(sel(V1, V2))U131(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isNaturalKind(0)tt
isNaturalKind(head(V1))isLNatKind(V1)isNaturalKind(s(V1))isNaturalKind(V1)
isNaturalKind(sel(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))isPLNat(pair(V1, V2))U141(and(isLNatKind(V1), isLNatKind(V2)), V1, V2)
isPLNat(splitAt(V1, V2))U151(and(isNaturalKind(V1), isLNatKind(V2)), V1, V2)isPLNatKind(pair(V1, V2))and(isLNatKind(V1), isLNatKind(V2))
isPLNatKind(splitAt(V1, V2))and(isNaturalKind(V1), isLNatKind(V2))natsFrom(N)U161(and(isNatural(N), isNaturalKind(N)), N)
sel(N, XS)U171(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)snd(pair(X, Y))U181(and(and(isLNat(X), isLNatKind(X)), and(isLNat(Y), isLNatKind(Y))), Y)
splitAt(0, XS)U191(and(isLNat(XS), isLNatKind(XS)), XS)splitAt(s(N), cons(X, XS))U201(and(and(isNatural(N), isNaturalKind(N)), and(and(isNatural(X), isNaturalKind(X)), and(isLNat(XS), isLNatKind(XS)))), N, X, XS)
tail(cons(N, XS))U211(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), XS)take(N, XS)U221(and(and(isNatural(N), isNaturalKind(N)), and(isLNat(XS), isLNatKind(XS))), N, XS)

Original Signature

Termination of terms over the following signature is verified: natsFrom, U161, U112, fst, U111, U62, U61, U211, head, U21, U153, U151, isPLNat, U152, isLNatKind, tail, U191, U71, and, U72, U122, isPLNatKind, 0, U121, U221, isLNat, U31, U181, pair, isNatural, U132, U131, U43, U42, U92, U133, U41, U91, snd, cons, isNaturalKind, U171, splitAt, U143, U201, U142, U202, U141, U51, s, tt, U53, U82, take, U52, U81, U11, afterNth, U102, U103, sel, nil, U101

Strategy

Context-sensitive strategy:
μ(isNatural#) = μ(isNaturalKind#) = μ(isLNatKind#) = μ(isLNatKind) = μ(isPLNat) = μ(0) = μ(isLNat#) = μ(T) = μ(tt) = μ(isPLNatKind#) = μ(isPLNatKind) = μ(isLNat) = μ(isNatural) = μ(isNaturalKind) = μ(isPLNat#) = μ(nil) = ∅
μ(natsFrom#) = μ(U11#) = μ(fst#) = μ(U31#) = μ(U181#) = μ(U52#) = μ(tail#) = μ(U112) = μ(U111) = μ(U62) = μ(U61) = μ(U161#) = μ(U72#) = μ(U51#) = μ(U202#) = μ(tail) = μ(U71) = μ(U191) = μ(U72) = μ(U122) = μ(U71#) = μ(U121) = μ(U102#) = μ(and#) = μ(U201#) = μ(U122#) = μ(U221#) = μ(U132) = μ(U43#) = μ(U43) = μ(U131) = μ(U42) = μ(U41) = μ(U133) = μ(U142#) = μ(cons) = μ(U121#) = μ(U101#) = μ(U53#) = μ(U143) = μ(U142) = μ(U141) = μ(U51) = μ(s) = μ(U53) = μ(U52) = μ(U141#) = μ(U151#) = μ(natsFrom) = μ(U21#) = μ(U161) = μ(U62#) = μ(U171#) = μ(fst) = μ(U41#) = μ(U211) = μ(snd#) = μ(head) = μ(U21) = μ(U152#) = μ(U61#) = μ(U153) = μ(U103#) = μ(U151) = μ(U152) = μ(and) = μ(U42#) = μ(U133#) = μ(U143#) = μ(U191#) = μ(U221) = μ(U31) = μ(U181) = μ(U153#) = μ(U91#) = μ(U81#) = μ(U211#) = μ(U92) = μ(U91) = μ(U132#) = μ(U111#) = μ(snd) = μ(U171) = μ(U92#) = μ(U82#) = μ(U201) = μ(U202) = μ(U82) = μ(U81) = μ(U112#) = μ(U11) = μ(head#) = μ(U131#) = μ(U102) = μ(U103) = μ(U101) = {1}
μ(sel#) = μ(take#) = μ(pair) = μ(splitAt) = μ(afterNth) = μ(splitAt#) = μ(afterNth#) = μ(take) = μ(sel) = {1, 2}


There are no SCCs!